From d4b2ee7465c00713dd2400b8373f1be8b54392ad Mon Sep 17 00:00:00 2001 From: "liulb@mesnac.com" Date: Thu, 1 Feb 2024 09:00:43 +0800 Subject: [PATCH] new --- Admin.Core.Api/Admin.Core.Api.xml | 16 +- Admin.Core.Api/Admin.Core.Model.xml | 306 +++++++- .../Business/MaterialController.cs | 21 +- .../Controllers/Business/SolventController.cs | 36 +- Admin.Core.Api/appsettings.Development.json | 6 +- Admin.Core.Api/appsettings.json | 6 +- Admin.Core.Common/Admin.Core.Common.csproj | 2 +- Admin.Core.Extensions/Middlewares/PlcMildd.cs | 1 + .../IBinFeedingReportRepository.cs | 11 + .../IRepository_New/Ixl_weighRepository.cs | 11 + .../IService_New/IBinFeedingReportServices.cs | 12 + .../IService_New/ISolventServices.cs | 6 +- .../IService_New/Ixl_materialServices.cs | 5 +- .../Model_New/BinFeedingReport.cs | 104 +++ Admin.Core.Model/Model_New/Hw_Barrel.cs | 13 + .../Hw_BinTypeErrorPreventionReport.cs | 22 + .../Hw_SolventErrorPreventionReport.cs | 40 +- .../Model_New/Hw_WareHouse_Sub.cs | 4 + Admin.Core.Model/Model_New/RT_plan.cs | 34 +- Admin.Core.Model/Model_New/xl_weigh.cs | 80 ++ .../ViewModels/HwWareHouseSubView.cs | 6 +- Admin.Core.Model/ViewModels/VerifyView.cs | 4 + Admin.Core.Plc/Admin.Core.Plc.csproj | 1 + Admin.Core.Plc/S71500Service.cs | 12 +- Admin.Core.PlcServer/IPlc.cs | 1 + Admin.Core.PlcServer/Impl/SiemensPlc.cs | 36 +- Admin.Core.PlcServer/PlcConnect.cs | 49 ++ Admin.Core.PlcServer/XlPlcConnect.cs | 42 + .../Properties/launchSettings.json | 8 + Admin.Core.Repository/BASE/BaseRepository.cs | 206 ++--- .../BinFeedingReportRepository.cs | 15 + .../Repository_New/RT_planRepository.cs | 7 +- .../Repository_New/xl_weighRepository.cs | 15 + Admin.Core.RunPlc/Admin.Core.RunPlc.csproj | 2 + Admin.Core.RunPlc/IRunPlcService.cs | 2 + Admin.Core.RunPlc/RunPlcService.cs | 125 ++- Admin.Core.Service/Admin.Core.Service.csproj | 6 + .../Service_New/BinFeedingReportServices.cs | 17 + .../Service_New/Hw_WarehouseServices.cs | 128 ++-- .../Service_New/SolventServices.cs | 718 +++++++++++------- .../Service_New/xl_materialServices.cs | 149 +++- .../QuartzNet/Jobs/Job_Admin_Quartz.cs | 71 +- Admin.Core.Wpf/App.xaml.cs | 1 - S71500/Impl/Adapter.cs | 2 +- 44 files changed, 1768 insertions(+), 591 deletions(-) create mode 100644 Admin.Core.IRepository/IRepository_New/IBinFeedingReportRepository.cs create mode 100644 Admin.Core.IRepository/IRepository_New/Ixl_weighRepository.cs create mode 100644 Admin.Core.IService/IService_New/IBinFeedingReportServices.cs create mode 100644 Admin.Core.Model/Model_New/BinFeedingReport.cs create mode 100644 Admin.Core.Model/Model_New/xl_weigh.cs create mode 100644 Admin.Core.PlcServer/PlcConnect.cs create mode 100644 Admin.Core.PlcServer/XlPlcConnect.cs create mode 100644 Admin.Core.RealTimeService/Properties/launchSettings.json create mode 100644 Admin.Core.Repository/Repository_New/BinFeedingReportRepository.cs create mode 100644 Admin.Core.Repository/Repository_New/xl_weighRepository.cs create mode 100644 Admin.Core.Service/Service_New/BinFeedingReportServices.cs diff --git a/Admin.Core.Api/Admin.Core.Api.xml b/Admin.Core.Api/Admin.Core.Api.xml index 1627ca5..256eacb 100644 --- a/Admin.Core.Api/Admin.Core.Api.xml +++ b/Admin.Core.Api/Admin.Core.Api.xml @@ -299,7 +299,7 @@ 料仓条码信息 - + 检量称扫码绑定桶(新加) @@ -319,6 +319,12 @@ + + + 料框防错验证——只验证单料 + + + 溶剂称量 PDA接口 @@ -360,6 +366,14 @@ 拉缸Code + + + 整包物料查询 + + 整包物料编码 + 地磅名称:1号地磅|2号地磅 + + 反应釜防错验证 diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml index 734659e..0a0b5ba 100644 --- a/Admin.Core.Api/Admin.Core.Model.xml +++ b/Admin.Core.Api/Admin.Core.Model.xml @@ -221,6 +221,109 @@ 唯一标识 + + + + + + + + Desc: + Default: + Nullable:False + + + + + Desc:料仓主键 + Default: + Nullable:True + + + + + Desc:名称 + Default: + Nullable:True + + + + + Desc:条码 + Default: + Nullable:True + + + + + Desc:批次 + Default: + Nullable:True + + + + + Desc:名称 + Default: + Nullable:True + + + + + Desc:物料ID + Default: + Nullable:True + + + + + Desc:物料名称 + Default: + Nullable:True + + + + + Desc:条码 + Default: + Nullable:True + + + + + Desc:存货编码 + Default: + Nullable:True + + + + + Desc:批次号 + Default: + Nullable:True + + + + + Desc:流水号 + Default: + Nullable:True + + + + + Desc:创建时间 + Default: + Nullable:True + + + + + Desc:完整二维码 + Default: + Nullable:True + + 桶管理 @@ -268,6 +371,20 @@ Nullable:True + + + Desc:物料ID + Default: + Nullable:True + + + + + Desc:物料名称 + Default: + Nullable:True + + 计划ID @@ -421,6 +538,27 @@ Nullable:True + + + Desc:存货编码 + Default: + Nullable:True + + + + + Desc:批次号 + Default: + Nullable:True + + + + + Desc:流水号 + Default: + Nullable:True + + Desc:创建时间 @@ -428,6 +566,11 @@ Nullable:True + + + 完整二维码 + + @@ -601,6 +744,20 @@ Nullable:True + + + Desc:批次 + Default: + Nullable:True + + + + + Desc:产品名称 + Default: + Nullable:True + + Desc:完成次数 @@ -624,7 +781,7 @@ - Desc: + Desc:当前执行物料名称 Default: Nullable:True @@ -641,6 +798,31 @@ 读取完整物料信息 + + + 存货编码 + + + + + 批次 + + + + + 流水号 + + + + + 创建时间 + + + + + 完整二维码 + + 反应釜 @@ -813,6 +995,11 @@ 泵条码 + + + 皮重 + + @@ -1788,6 +1975,20 @@ Nullable:False + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + Desc: @@ -1991,9 +2192,25 @@ Nullable:True + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + - 物料执行顺序——每执行一个+1,下一批次清空 + Desc:物料顺序,累计完成信号+1,下一个批次清零 + Default: + Nullable:True @@ -2438,6 +2655,81 @@ Nullable:True + + + 配方信息 + + + + + Desc:主键 + Default: + Nullable:False + + + + + Desc:台机号 + Default: + Nullable:True + + + + + Desc:物料ID + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + + + + Desc: + Default: + Nullable:True + + 部门视图 @@ -4215,6 +4507,11 @@ Nullable:True + + + 皮重 + + 投料釜匹配完成传入参数 @@ -4655,6 +4952,11 @@ 固含率 + + + 二维码信息 + + 待执行物料 diff --git a/Admin.Core.Api/Controllers/Business/MaterialController.cs b/Admin.Core.Api/Controllers/Business/MaterialController.cs index 1650416..948847a 100644 --- a/Admin.Core.Api/Controllers/Business/MaterialController.cs +++ b/Admin.Core.Api/Controllers/Business/MaterialController.cs @@ -118,9 +118,10 @@ namespace Admin.Core.Api /// 匹配状态:条码匹配写“1”,不匹配时写“2” /// 物料编码 /// 物料重量 + /// 物料二维码 /// [HttpGet] - public async Task> ExecPlcCode(int code, int state,string materialCode,decimal weight) + public async Task> ExecPlcCode(int code, int state,string materialCode,decimal weight,string? barCode) { //log.Info(code + "&" + state); if (!code.IsNotEmptyOrNull()) @@ -139,7 +140,7 @@ namespace Admin.Core.Api { return Failed("匹配状态传入参数为空!"); } - var result = await _xl_materialService.ExecPlcState(code, state, materialCode, weight); + var result = await _xl_materialService.ExecPlcState(code, state, materialCode, weight, barCode); if (result.success) { return result; @@ -154,7 +155,6 @@ namespace Admin.Core.Api /// /// 桶条码 /// - [Obsolete("废弃")] [HttpGet] public async Task> BindBarrel(string code) { @@ -208,7 +208,6 @@ namespace Admin.Core.Api /// /// [HttpGet] - [Obsolete("废弃")] public async Task>> GetXlPlanInfo() { MessageModel> message=new MessageModel>(); @@ -227,5 +226,19 @@ namespace Admin.Core.Api return message; } #endregion + + #region 料框防错验证——只验证单料 + /// + /// 料框防错验证——只验证单料 + /// + /// + [HttpGet] + public async Task> MaterialVerification(string barCode) + { + MessageModel message = await _xl_materialService.MaterialVerification(barCode); + + return message; + } + #endregion } } \ No newline at end of file diff --git a/Admin.Core.Api/Controllers/Business/SolventController.cs b/Admin.Core.Api/Controllers/Business/SolventController.cs index 6260195..424645d 100644 --- a/Admin.Core.Api/Controllers/Business/SolventController.cs +++ b/Admin.Core.Api/Controllers/Business/SolventController.cs @@ -73,12 +73,12 @@ namespace Admin.Core.Api return Failed("传入参数为空!"); } - var result = await _solventServices.ExecPlcState(view); - if (result) + MessageModel result = await _solventServices.ExecPlcState(view); + if (result.success) { - return Success(result); + return result; } - return Failed("执行失败!"); + return result; } #endregion @@ -136,6 +136,32 @@ namespace Admin.Core.Api } #endregion - + #region 查询整包称量物料 + /// + /// 整包物料查询 + /// + /// 整包物料编码 + /// 地磅名称:1号地磅|2号地磅 + /// + [HttpGet] + public async Task> GetByZbCode(string code, string weighbridge) + { + if (!code.IsNotEmptyOrNull()) + { + return Failed("传入物料条码参数为空!"); + } + if (!weighbridge.IsNotEmptyOrNull()) + { + return Failed("传入地磅参数为空!"); + } + var query = await _solventServices.GetByZbCode(code.Trim(), weighbridge.Trim()); + if (query == null) + { + return Failed("未查询到计划信息!"); + } + return Success(query); + } + + #endregion } } \ No newline at end of file diff --git a/Admin.Core.Api/appsettings.Development.json b/Admin.Core.Api/appsettings.Development.json index 3123b80..696a942 100644 --- a/Admin.Core.Api/appsettings.Development.json +++ b/Admin.Core.Api/appsettings.Development.json @@ -149,7 +149,7 @@ "Enabled": true }, "QuartzNetJob": { - "Enabled": true + "Enabled": false }, "Consul": { "Enabled": false @@ -162,13 +162,13 @@ { "Id": 1, "EquipName": "小料PLC", - "IP": "192.168.10.100", + "IP": "127.0.0.1", "Port": 102 }, { "Id": 2, "EquipName": "溶剂PLC", - "IP": "192.168.10.130", + "IP": "127.0.0.1", "Port": 102 } ], diff --git a/Admin.Core.Api/appsettings.json b/Admin.Core.Api/appsettings.json index 3123b80..696a942 100644 --- a/Admin.Core.Api/appsettings.json +++ b/Admin.Core.Api/appsettings.json @@ -149,7 +149,7 @@ "Enabled": true }, "QuartzNetJob": { - "Enabled": true + "Enabled": false }, "Consul": { "Enabled": false @@ -162,13 +162,13 @@ { "Id": 1, "EquipName": "小料PLC", - "IP": "192.168.10.100", + "IP": "127.0.0.1", "Port": 102 }, { "Id": 2, "EquipName": "溶剂PLC", - "IP": "192.168.10.130", + "IP": "127.0.0.1", "Port": 102 } ], diff --git a/Admin.Core.Common/Admin.Core.Common.csproj b/Admin.Core.Common/Admin.Core.Common.csproj index 67a0c5f..df703c4 100644 --- a/Admin.Core.Common/Admin.Core.Common.csproj +++ b/Admin.Core.Common/Admin.Core.Common.csproj @@ -31,7 +31,7 @@ - + diff --git a/Admin.Core.Extensions/Middlewares/PlcMildd.cs b/Admin.Core.Extensions/Middlewares/PlcMildd.cs index 61bc57e..af94536 100644 --- a/Admin.Core.Extensions/Middlewares/PlcMildd.cs +++ b/Admin.Core.Extensions/Middlewares/PlcMildd.cs @@ -20,6 +20,7 @@ namespace Admin.Core.Extensions if (Appsettings.app("Middleware", "Plc", "Enabled").ObjToBool()) { await plc.StartPlcAsync(); + await plc.StartAlarmAsync(); } } catch (Exception e) diff --git a/Admin.Core.IRepository/IRepository_New/IBinFeedingReportRepository.cs b/Admin.Core.IRepository/IRepository_New/IBinFeedingReportRepository.cs new file mode 100644 index 0000000..765e2b9 --- /dev/null +++ b/Admin.Core.IRepository/IRepository_New/IBinFeedingReportRepository.cs @@ -0,0 +1,11 @@ +using Admin.Core.Model; + +namespace Admin.Core.IRepository +{ + /// + /// IBinFeedingReportRepository + /// + public interface IBinFeedingReportRepository : IBaseRepository + { + } +} \ No newline at end of file diff --git a/Admin.Core.IRepository/IRepository_New/Ixl_weighRepository.cs b/Admin.Core.IRepository/IRepository_New/Ixl_weighRepository.cs new file mode 100644 index 0000000..998f933 --- /dev/null +++ b/Admin.Core.IRepository/IRepository_New/Ixl_weighRepository.cs @@ -0,0 +1,11 @@ +using Admin.Core.Model; + +namespace Admin.Core.IRepository +{ + /// + /// Ixl_weighRepository + /// + public interface Ixl_weighRepository : IBaseRepository + { + } +} \ No newline at end of file diff --git a/Admin.Core.IService/IService_New/IBinFeedingReportServices.cs b/Admin.Core.IService/IService_New/IBinFeedingReportServices.cs new file mode 100644 index 0000000..f6a617a --- /dev/null +++ b/Admin.Core.IService/IService_New/IBinFeedingReportServices.cs @@ -0,0 +1,12 @@ +using Admin.Core.IService; +using Admin.Core.Model; + +namespace Admin.Core.IService +{ + /// + /// IBinFeedingReportServices + /// + public interface IBinFeedingReportServices :IBaseServices + { + } +} \ No newline at end of file diff --git a/Admin.Core.IService/IService_New/ISolventServices.cs b/Admin.Core.IService/IService_New/ISolventServices.cs index 2d44f5c..4d0e610 100644 --- a/Admin.Core.IService/IService_New/ISolventServices.cs +++ b/Admin.Core.IService/IService_New/ISolventServices.cs @@ -1,4 +1,5 @@ -using Admin.Core.IService; +using Admin.Core.Common; +using Admin.Core.IService; using Admin.Core.Model; using Admin.Core.Model.ViewModels; using System.Collections.Generic; @@ -12,9 +13,10 @@ namespace Admin.Core.IService public interface ISolventServices { Task GetByCylinderCode(string code, string weighbridge); - Task ExecPlcState(VerifyView view); + Task> ExecPlcState(VerifyView view); Task GetByPumpCode(string code); Task ExecState(string planId,string pumpCode,string cylinderCode); Task> GetSolventPlanInfo(); + Task GetByZbCode(string code, string weighbridge); } } \ No newline at end of file diff --git a/Admin.Core.IService/IService_New/Ixl_materialServices.cs b/Admin.Core.IService/IService_New/Ixl_materialServices.cs index 344f8fb..b5755e2 100644 --- a/Admin.Core.IService/IService_New/Ixl_materialServices.cs +++ b/Admin.Core.IService/IService_New/Ixl_materialServices.cs @@ -19,12 +19,15 @@ namespace Admin.Core.IService /// 状态 /// 物料编码 /// 物料重量 - Task> ExecPlcState(int binSerial, int state,string materialCode,decimal weight); + /// 物料二维码 + Task> ExecPlcState(int binSerial, int state,string materialCode,decimal weight, string? barCode); /// /// 绑定料桶信息 /// /// /// Task BindBarrel(string code); + + Task> MaterialVerification(string barCode); } } \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/BinFeedingReport.cs b/Admin.Core.Model/Model_New/BinFeedingReport.cs new file mode 100644 index 0000000..da0b3f7 --- /dev/null +++ b/Admin.Core.Model/Model_New/BinFeedingReport.cs @@ -0,0 +1,104 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + + +namespace Admin.Core.Model +{ + /// + /// + /// + [SugarTable( "BinFeedingReport", "admin_sqlite")] + public class BinFeedingReport + { + public BinFeedingReport() + { + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,IsIdentity=true)] +public int ID { get; set; } + /// + /// Desc:料仓主键 + /// Default: + /// Nullable:True + /// +public int? BinID { get; set; } + /// + /// Desc:名称 + /// Default: + /// Nullable:True + /// +public string Bin_Name { get; set; } + /// + /// Desc:条码 + /// Default: + /// Nullable:True + /// +public string Bin_Code { get; set; } + /// + /// Desc:批次 + /// Default: + /// Nullable:True + /// +public string Batch { get; set; } + /// + /// Desc:名称 + /// Default: + /// Nullable:True + /// +public string ProductName { get; set; } + /// + /// Desc:物料ID + /// Default: + /// Nullable:True + /// +public string MaterialID { get; set; } + /// + /// Desc:物料名称 + /// Default: + /// Nullable:True + /// +public string MaterialName { get; set; } + /// + /// Desc:条码 + /// Default: + /// Nullable:True + /// +public string Material_Code { get; set; } + /// + /// Desc:存货编码 + /// Default: + /// Nullable:True + /// +public string Material_InventoryCode { get; set; } + /// + /// Desc:批次号 + /// Default: + /// Nullable:True + /// +public string Material_BatchNumber { get; set; } + /// + /// Desc:流水号 + /// Default: + /// Nullable:True + /// +public string Material_SerialCode { get; set; } + /// + /// Desc:创建时间 + /// Default: + /// Nullable:True + /// +public DateTime? CreateTime { get; set; } + /// + /// Desc:完整二维码 + /// Default: + /// Nullable:True + /// +public string BarCodeStr { get; set; } + } +} \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/Hw_Barrel.cs b/Admin.Core.Model/Model_New/Hw_Barrel.cs index 8ce44e5..d02bb37 100644 --- a/Admin.Core.Model/Model_New/Hw_Barrel.cs +++ b/Admin.Core.Model/Model_New/Hw_Barrel.cs @@ -54,6 +54,19 @@ namespace Admin.Core.Model /// public string MaterialName { get; set; } /// + /// Desc:物料ID + /// Default: + /// Nullable:True + /// + public string Material_KeyID { get; set; } + + /// + /// Desc:物料名称 + /// Default: + /// Nullable:True + /// + public string Material_KeyName { get; set; } + /// /// 计划ID /// public string PlanId { get; set; } diff --git a/Admin.Core.Model/Model_New/Hw_BinTypeErrorPreventionReport.cs b/Admin.Core.Model/Model_New/Hw_BinTypeErrorPreventionReport.cs index eae18fa..be386bb 100644 --- a/Admin.Core.Model/Model_New/Hw_BinTypeErrorPreventionReport.cs +++ b/Admin.Core.Model/Model_New/Hw_BinTypeErrorPreventionReport.cs @@ -56,10 +56,32 @@ namespace Admin.Core.Model /// public string Material_Code { get; set; } /// + /// Desc:存货编码 + /// Default: + /// Nullable:True + /// + public string Material_InventoryCode { get; set; } + /// + /// Desc:批次号 + /// Default: + /// Nullable:True + /// + public string Material_BatchNumber { get; set; } + /// + /// Desc:流水号 + /// Default: + /// Nullable:True + /// + public string Material_SerialCode { get; set; } + /// /// Desc:创建时间 /// Default: /// Nullable:True /// public DateTime? CreateTime { get; set; } + /// + /// 完整二维码 + /// + public string BarCodeStr { get; set; } } } \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/Hw_SolventErrorPreventionReport.cs b/Admin.Core.Model/Model_New/Hw_SolventErrorPreventionReport.cs index adbad3d..33cb710 100644 --- a/Admin.Core.Model/Model_New/Hw_SolventErrorPreventionReport.cs +++ b/Admin.Core.Model/Model_New/Hw_SolventErrorPreventionReport.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Text; using SqlSugar; @@ -12,9 +13,6 @@ namespace Admin.Core.Model [SugarTable("Hw_SolventErrorPreventionReport", "cwss_xl")] public class Hw_SolventErrorPreventionReport { - public Hw_SolventErrorPreventionReport() - { - } /// /// Desc: /// Default: @@ -29,6 +27,18 @@ namespace Admin.Core.Model /// public string PlanId { get; set; } /// + /// Desc:批次 + /// Default: + /// Nullable:True + /// + public string Batch { get; set; } + /// + /// Desc:产品名称 + /// Default: + /// Nullable:True + /// + public string ProductName { get; set; } + /// /// Desc:完成次数 /// Default: /// Nullable:True @@ -47,7 +57,7 @@ namespace Admin.Core.Model /// public string MaterialID { get; set; } /// - /// Desc: + /// Desc:当前执行物料名称 /// Default: /// Nullable:True /// @@ -61,6 +71,26 @@ namespace Admin.Core.Model /// /// 读取完整物料信息 /// - public string WholeMaterial { get; set; } + public string WholeMaterial { get; set; } + /// + /// 存货编码 + /// + public string Material_InventoryCode { get; set; } + /// + /// 批次 + /// + public string Material_BatchNumber { get; set; } + /// + /// 流水号 + /// + public string Material_SerialCode { get; set; } + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } + /// + /// 完整二维码 + /// + public string BarCodeStr { get; set; } } } \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/Hw_WareHouse_Sub.cs b/Admin.Core.Model/Model_New/Hw_WareHouse_Sub.cs index 734ddb8..7c06c45 100644 --- a/Admin.Core.Model/Model_New/Hw_WareHouse_Sub.cs +++ b/Admin.Core.Model/Model_New/Hw_WareHouse_Sub.cs @@ -127,5 +127,9 @@ namespace Admin.Core.Model /// public string PumpCode { get; set; } + /// + /// 皮重 + /// + public decimal Tare { get; set; } } } \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/RT_plan.cs b/Admin.Core.Model/Model_New/RT_plan.cs index ed7d165..568f178 100644 --- a/Admin.Core.Model/Model_New/RT_plan.cs +++ b/Admin.Core.Model/Model_New/RT_plan.cs @@ -37,6 +37,18 @@ namespace Admin.Core.Model [SugarColumn(IsPrimaryKey = true)] public string Equip_Code { get; set; } /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Batch { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ProductName { get; set; } + /// /// Desc: /// Default: /// Nullable:True @@ -107,7 +119,7 @@ namespace Admin.Core.Model /// Default: /// Nullable:True /// - public int? Duration_Time { get; set; } + public int Duration_Time { get; set; } /// /// Desc: /// Default: @@ -179,13 +191,13 @@ namespace Admin.Core.Model /// Default: /// Nullable:True /// - public int? Retransmission_Num { get; set; } + public int Retransmission_Num { get; set; } /// /// Desc: /// Default: /// Nullable:True /// - public int? IF_FLAG { get; set; } + public int IF_FLAG { get; set; } /// /// Desc: /// Default: @@ -211,7 +223,21 @@ namespace Admin.Core.Model /// public string PumpBarCode { get; set; } /// - /// 物料执行顺序——每执行一个+1,下一批次清空 + /// Desc: + /// Default: + /// Nullable:True + /// + public int WeighbridgeId { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Weighbridge { get; set; } + /// + /// Desc:物料顺序,累计完成信号+1,下一个批次清零 + /// Default: + /// Nullable:True /// public int Exec_Num { get; set; } } diff --git a/Admin.Core.Model/Model_New/xl_weigh.cs b/Admin.Core.Model/Model_New/xl_weigh.cs new file mode 100644 index 0000000..4a4a5a8 --- /dev/null +++ b/Admin.Core.Model/Model_New/xl_weigh.cs @@ -0,0 +1,80 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + + +namespace Admin.Core.Model +{ + /// + ///配方信息 + /// + [SugarTable("xl_weigh", "admin_sqlite")] + public class xl_weigh + { + public xl_weigh() + { + } + /// + /// Desc:主键 + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int ID { get; set; } + /// + /// Desc:台机号 + /// Default: + /// Nullable:True + /// + public string Equip_Code { get; set; } + /// + /// Desc:物料ID + /// Default: + /// Nullable:True + /// + public string Recipe_ID { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public int? Bin_Serial { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public int? Weight_Id { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Material_ID { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public int? Station { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public decimal? Set_Weight { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public decimal? Set_Error { get; set; } + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public decimal? Cpk_Error { get; set; } + } +} \ No newline at end of file diff --git a/Admin.Core.Model/ViewModels/HwWareHouseSubView.cs b/Admin.Core.Model/ViewModels/HwWareHouseSubView.cs index 72b1a55..d82dbf1 100644 --- a/Admin.Core.Model/ViewModels/HwWareHouseSubView.cs +++ b/Admin.Core.Model/ViewModels/HwWareHouseSubView.cs @@ -92,6 +92,10 @@ namespace Admin.Core.Model.ViewModels /// Nullable:True /// public string Recipe { get; set; } - + /// + /// 皮重 + /// + public decimal Tare { get; set; } + } } diff --git a/Admin.Core.Model/ViewModels/VerifyView.cs b/Admin.Core.Model/ViewModels/VerifyView.cs index 5512946..fa37292 100644 --- a/Admin.Core.Model/ViewModels/VerifyView.cs +++ b/Admin.Core.Model/ViewModels/VerifyView.cs @@ -135,5 +135,9 @@ namespace Admin.Core.Model.ViewModels /// 固含率 /// public double Rate { get; set; } + /// + /// 二维码信息 + /// + public List BarCodeList { get; set; } } } \ No newline at end of file diff --git a/Admin.Core.Plc/Admin.Core.Plc.csproj b/Admin.Core.Plc/Admin.Core.Plc.csproj index 489b2af..36ceb9b 100644 --- a/Admin.Core.Plc/Admin.Core.Plc.csproj +++ b/Admin.Core.Plc/Admin.Core.Plc.csproj @@ -8,6 +8,7 @@ + diff --git a/Admin.Core.Plc/S71500Service.cs b/Admin.Core.Plc/S71500Service.cs index 2d0cfee..1dabf7c 100644 --- a/Admin.Core.Plc/S71500Service.cs +++ b/Admin.Core.Plc/S71500Service.cs @@ -1,4 +1,6 @@ using Admin.Core.Common; +using Admin.Core.PlcServer; +using log4net; using S71500.Impl; using System; using System.Collections.Generic; @@ -11,6 +13,8 @@ namespace Admin.Core.Plc { public class S71500Service : IS71500Service { + + bool flag = true; public S71500Service() { string address = Appsettings.app("Siemens", "ConString").ToString(); @@ -18,9 +22,8 @@ namespace Admin.Core.Plc Adapter.Registe(); Adapter.Connect(address, port); } - public Task AddPlcAsync() + public Task AddPlcAsync() { - System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器,设置间隔时间为1000毫秒; timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecTask); //到达时间的时候执行事件; timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); @@ -30,9 +33,10 @@ namespace Admin.Core.Plc return Task.CompletedTask; } + private void ExecTask(object source, System.Timers.ElapsedEventArgs e) { - if (Adapter.Device_GetState("M100")) + if (Adapter.Device_GetState("DB110.DBW24")) { Console.WriteLine("PLC连接成功!"); } @@ -50,5 +54,7 @@ namespace Admin.Core.Plc } } } + + } } diff --git a/Admin.Core.PlcServer/IPlc.cs b/Admin.Core.PlcServer/IPlc.cs index 791c217..eabf977 100644 --- a/Admin.Core.PlcServer/IPlc.cs +++ b/Admin.Core.PlcServer/IPlc.cs @@ -38,6 +38,7 @@ namespace Admin.Core.PlcServer /// /// bool ReadBool(string address); + Task ReadBoolAsync(string address); /// /// 读取int16 /// diff --git a/Admin.Core.PlcServer/Impl/SiemensPlc.cs b/Admin.Core.PlcServer/Impl/SiemensPlc.cs index e75c5c4..393ce05 100644 --- a/Admin.Core.PlcServer/Impl/SiemensPlc.cs +++ b/Admin.Core.PlcServer/Impl/SiemensPlc.cs @@ -125,6 +125,7 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.Read(address, 26); + log.Info($"ReadBytes方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { byte[] code = new byte[read.Content.Length - 2]; @@ -153,6 +154,27 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.ReadBool(address); + log.Info($"ReadBool方法是否成功:{read.IsSuccess};反馈:{read.Message}"); + if (read.IsSuccess) + { + iflag = read.Content; + } + return iflag; + } + catch (Exception ex) + { + log.Error("ReadBool方法异常" + ex.ToString()); + } + return iflag; + } + + public async Task ReadBoolAsync(string address) + { + bool iflag = false; + try + { + OperateResult read =await siemensS7Net.ReadBoolAsync(address); + log.Info($"ReadBool方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { iflag = read.Content; @@ -179,6 +201,7 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.ReadInt16(address); + log.Info($"ReadInt16方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { returnflag = read.Content; @@ -204,6 +227,7 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.ReadInt32(address); + log.Info($"ReadInt32方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { returnflag = read.Content; @@ -230,6 +254,7 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.ReadString(address, 10); + log.Info($"ReadString方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { returnflag = read.Content; @@ -256,6 +281,7 @@ namespace Admin.Core.PlcServer try { OperateResult read = siemensS7Net.ReadFloat(address); + log.Info($"ReadFloat方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { flag = read.Content; @@ -284,7 +310,7 @@ namespace Admin.Core.PlcServer { OperateResult write = siemensS7Net.Write(address, short.Parse(value)); //Task> operateResult = siemensS7Net.Wait(address, short.Parse(value)); - + log.Info($"WriteInt16方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -316,6 +342,7 @@ namespace Admin.Core.PlcServer try { OperateResult write = siemensS7Net.Write(address, value); + log.Info($"WriteInt32方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -347,6 +374,7 @@ namespace Admin.Core.PlcServer try { OperateResult write = siemensS7Net.Write(address, value); + log.Info($"WriteString方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -380,6 +408,7 @@ namespace Admin.Core.PlcServer try { OperateResult write = siemensS7Net.Write(address, bytes); + log.Info($"WriteByte方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -411,6 +440,7 @@ namespace Admin.Core.PlcServer try { OperateResult write = siemensS7Net.Write(address, value); + log.Info($"WriteFloat方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -444,6 +474,7 @@ namespace Admin.Core.PlcServer try { OperateResult write = siemensS7Net.Write(address, value); + log.Info($"Writedouble方法是否成功:{write.IsSuccess};反馈:{write.Message}"); if (write.IsSuccess) { iflag = true; @@ -464,7 +495,7 @@ namespace Admin.Core.PlcServer #endregion - #region 心跳使用——喂狗 + #region 心跳使用 /// /// 心跳使用 /// @@ -476,6 +507,7 @@ namespace Admin.Core.PlcServer { siemensS7Net.ReceiveTimeOut = 2000; OperateResult read = await siemensS7Net.ReadBoolAsync(address); + log.Info($"心跳方法是否成功:{read.IsSuccess};反馈:{read.Message}"); if (read.IsSuccess) { IsConnected = true; diff --git a/Admin.Core.PlcServer/PlcConnect.cs b/Admin.Core.PlcServer/PlcConnect.cs new file mode 100644 index 0000000..c854ce3 --- /dev/null +++ b/Admin.Core.PlcServer/PlcConnect.cs @@ -0,0 +1,49 @@ +using HslCommunication.Profinet.Siemens; +using log4net; +using System; + +namespace Admin.Core.PlcServer +{ + public class PlcConnect + { + private static readonly log4net.ILog log = LogManager.GetLogger(typeof(PlcConnect)); + private static readonly Lazy lazy = new Lazy(() => new PlcConnect().SiemensS7NetConnection()); + public static SiemensS7Net Instance => lazy.Value; + + private PlcConnect() + { + if (HslCommunication.Authorization.SetAuthorizationCode("ed1415f8-e06a-43ad-95f7-c04f7ae93b41")) + { + Console.WriteLine("HslCommunication激活成功!"); + } + } + + public SiemensS7Net SiemensS7NetConnection() + { + + Console.WriteLine("HslCommunication激活成功!"); + SiemensPLCS siemensPLCS = SiemensPLCS.S1500; + SiemensS7Net s7 = new SiemensS7Net(siemensPLCS); + //配料IP + s7.IpAddress = "192.168.10.130"; + s7.Port = 102; + var su = s7.ConnectServer(); + + if (!su.IsSuccess) + { + s7.IpAddress ="192.168.10.130"; + s7.Port = 102; + var su1 = s7.ConnectServer(); + if (!su1.IsSuccess) + { + return new SiemensS7Net(siemensPLCS); + } + } + + return s7; + } + } + + + +} diff --git a/Admin.Core.PlcServer/XlPlcConnect.cs b/Admin.Core.PlcServer/XlPlcConnect.cs new file mode 100644 index 0000000..61b9aaf --- /dev/null +++ b/Admin.Core.PlcServer/XlPlcConnect.cs @@ -0,0 +1,42 @@ +using HslCommunication.Profinet.Siemens; +using System; + +namespace Admin.Core.PlcServer +{ + public class XlPlcConnect + { + private static readonly Lazy lazy = new Lazy(() => new XlPlcConnect().SiemensS7NetConnection()); + public static SiemensS7Net Instance => lazy.Value; + + private XlPlcConnect() + { + + } + + public SiemensS7Net SiemensS7NetConnection() + { + SiemensPLCS siemensPLCS = SiemensPLCS.S1500; + SiemensS7Net s7 = new SiemensS7Net(siemensPLCS); + //配料IP + s7.IpAddress = "127.0.0.1"; // "192.168.10.100"; + s7.Port = 102; + var su = s7.ConnectServer(); + + if (!su.IsSuccess) + { + s7.IpAddress = "127.0.0.1"; // "192.168.10.100"; + s7.Port = 102; + var su1 = s7.ConnectServer(); + if (!su1.IsSuccess) + { + return new SiemensS7Net(siemensPLCS); + } + } + + return s7; + } + } + + + +} diff --git a/Admin.Core.RealTimeService/Properties/launchSettings.json b/Admin.Core.RealTimeService/Properties/launchSettings.json new file mode 100644 index 0000000..33504c9 --- /dev/null +++ b/Admin.Core.RealTimeService/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "WSL": { + "commandName": "WSL2", + "distributionName": "" + } + } +} \ No newline at end of file diff --git a/Admin.Core.Repository/BASE/BaseRepository.cs b/Admin.Core.Repository/BASE/BaseRepository.cs index 696bb4c..9e08a34 100644 --- a/Admin.Core.Repository/BASE/BaseRepository.cs +++ b/Admin.Core.Repository/BASE/BaseRepository.cs @@ -59,8 +59,8 @@ namespace Admin.Core.Repository public async Task QueryByIdAsync(object objId) { - //return await Task.Run(() => _db.Queryable().InSingle(objId)); - return await _db.Queryable().In(objId).SingleAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().InSingle(objId)); + return await _db.CopyNew().Queryable().In(objId).SingleAsync(); } /// /// 功能描述:根据ID查询一条数据 @@ -71,8 +71,8 @@ namespace Admin.Core.Repository /// 数据实体 public async Task QueryByIdAsync(object objId, bool blnUseCache = false) { - //return await Task.Run(() => _db.Queryable().WithCacheIF(blnUseCache).InSingle(objId)); - return await _db.Queryable().WithCacheIF(blnUseCache).In(objId).SingleAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().WithCacheIF(blnUseCache).InSingle(objId)); + return await _db.CopyNew().Queryable().WithCacheIF(blnUseCache).In(objId).SingleAsync(); } /// @@ -83,8 +83,8 @@ namespace Admin.Core.Repository /// 数据实体列表 public async Task> QueryByIDsAsync(object[] lstIds) { - //return await Task.Run(() => _db.Queryable().In(lstIds).ToList()); - return await _db.Queryable().In(lstIds).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().In(lstIds).ToList()); + return await _db.CopyNew().Queryable().In(lstIds).ToListAsync(); } /// @@ -94,11 +94,11 @@ namespace Admin.Core.Repository /// public async Task AddAsync(TEntity entity) { - //var i = await Task.Run(() => _db.Insertable(entity).ExecuteReturnBigIdentity()); + //var i = await Task.Run(() => _db.CopyNew().Insertable(entity).ExecuteReturnBigIdentity()); ////返回的i是long类型,这里你可以根据你的业务需要进行处理 //return (int)i; - var insert = _db.Insertable(entity); + var insert = _db.CopyNew().Insertable(entity); //这里你可以返回TEntity,这样的话就可以获取id值,无论主键是什么类型 //var return3 = await insert.ExecuteReturnEntityAsync(); @@ -115,7 +115,7 @@ namespace Admin.Core.Repository /// 返回自增量列 public async Task AddAsync(TEntity entity, Expression> insertColumns = null) { - var insert = _db.Insertable(entity); + var insert = _db.CopyNew().Insertable(entity); if (insertColumns == null) { return await insert.ExecuteReturnIdentityAsync(); @@ -133,7 +133,7 @@ namespace Admin.Core.Repository /// 影响行数 public async Task AddAsync(List listEntity) { - return await _db.Insertable(listEntity.ToArray()).ExecuteCommandAsync(); + return await _db.CopyNew().Insertable(listEntity.ToArray()).ExecuteCommandAsync(); } /// @@ -144,27 +144,27 @@ namespace Admin.Core.Repository public async Task UpdateAsync(TEntity entity) { ////这种方式会以主键为条件 - //var i = await Task.Run(() => _db.Updateable(entity).ExecuteCommand()); + //var i = await Task.Run(() => _db.CopyNew().Updateable(entity).ExecuteCommand()); //return i > 0; //这种方式会以主键为条件 - return await _db.Updateable(entity).ExecuteCommandHasChangeAsync(); + return await _db.CopyNew().Updateable(entity).ExecuteCommandHasChangeAsync(); } public async Task UpdateAsync(TEntity entity, string strWhere) { - //return await Task.Run(() => _db.Updateable(entity).Where(strWhere).ExecuteCommand() > 0); - return await _db.Updateable(entity).Where(strWhere).ExecuteCommandHasChangeAsync(); + //return await Task.Run(() => _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommand() > 0); + return await _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommandHasChangeAsync(); } public async Task UpdateAsync(string strSql, SugarParameter[] parameters = null) { - //return await Task.Run(() => _db.Ado.ExecuteCommand(strSql, parameters) > 0); - return await _db.Ado.ExecuteCommandAsync(strSql, parameters) > 0; + //return await Task.Run(() => _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) > 0); + return await _db.CopyNew().Ado.ExecuteCommandAsync(strSql, parameters) > 0; } public async Task UpdateAsync(object operateAnonymousObjects) { - return await _db.Updateable(operateAnonymousObjects).ExecuteCommandAsync() > 0; + return await _db.CopyNew().Updateable(operateAnonymousObjects).ExecuteCommandAsync() > 0; } public async Task UpdateAsync( @@ -174,7 +174,7 @@ namespace Admin.Core.Repository string strWhere = "" ) { - //IUpdateable up = await Task.Run(() => _db.Updateable(entity)); + //IUpdateable up = await Task.Run(() => _db.CopyNew().Updateable(entity)); //if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) //{ // up = await Task.Run(() => up.IgnoreColumns(it => lstIgnoreColumns.Contains(it))); @@ -189,7 +189,7 @@ namespace Admin.Core.Repository //} //return await Task.Run(() => up.ExecuteCommand()) > 0; - IUpdateable up = _db.Updateable(entity); + IUpdateable up = _db.CopyNew().Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); @@ -210,7 +210,7 @@ namespace Admin.Core.Repository /// public async Task FirstAsync() { - return await _db.Queryable().FirstAsync(); + return await _db.CopyNew().Queryable().FirstAsync(); } /// /// 查询第一条数据 @@ -219,7 +219,7 @@ namespace Admin.Core.Repository /// public async Task FirstAsync(Expression> whereExpression) { - return await _db.Queryable().WhereIF(whereExpression != null, whereExpression).FirstAsync(); + return await _db.CopyNew().Queryable().WhereIF(whereExpression != null, whereExpression).FirstAsync(); } /// /// 根据实体删除一条数据 @@ -228,9 +228,9 @@ namespace Admin.Core.Repository /// public async Task DeleteAsync(TEntity entity) { - //var i = await Task.Run(() => _db.Deleteable(entity).ExecuteCommand()); + //var i = await Task.Run(() => _db.CopyNew().Deleteable(entity).ExecuteCommand()); //return i > 0; - return await _db.Deleteable(entity).ExecuteCommandHasChangeAsync(); + return await _db.CopyNew().Deleteable(entity).ExecuteCommandHasChangeAsync(); } /// @@ -240,9 +240,9 @@ namespace Admin.Core.Repository /// public async Task DeleteByIdAsync(object id) { - //var i = await Task.Run(() => _db.Deleteable(id).ExecuteCommand()); + //var i = await Task.Run(() => _db.CopyNew().Deleteable(id).ExecuteCommand()); //return i > 0; - return await _db.Deleteable(id).ExecuteCommandHasChangeAsync(); + return await _db.CopyNew().Deleteable(id).ExecuteCommandHasChangeAsync(); } /// @@ -252,9 +252,9 @@ namespace Admin.Core.Repository /// public async Task DeletesAsync(List entitys) { - //var i = await Task.Run(() => _db.Deleteable().In(ids).ExecuteCommand()); + //var i = await Task.Run(() => _db.CopyNew().Deleteable().In(ids).ExecuteCommand()); //return i > 0; - return await _db.Deleteable(entitys).ExecuteCommandHasChangeAsync(); + return await _db.CopyNew().Deleteable(entitys).ExecuteCommandHasChangeAsync(); } /// @@ -264,7 +264,7 @@ namespace Admin.Core.Repository /// 数据列表 public async Task> QueryAsync() { - return await _db.Queryable().ToListAsync(); + return await _db.CopyNew().Queryable().ToListAsync(); } /// @@ -275,8 +275,8 @@ namespace Admin.Core.Repository /// 数据列表 public async Task> QueryAsync(string strWhere) { - //return await Task.Run(() => _db.Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); - return await _db.Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); + return await _db.CopyNew().Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync(); } /// @@ -287,7 +287,7 @@ namespace Admin.Core.Repository /// 数据列表 public async Task> QueryAsync(Expression> whereExpression) { - return await _db.Queryable().WhereIF(whereExpression != null, whereExpression).ToListAsync(); + return await _db.CopyNew().Queryable().WhereIF(whereExpression != null, whereExpression).ToListAsync(); } /// @@ -299,7 +299,7 @@ namespace Admin.Core.Repository /// public async Task> QueryAsync(Expression> expression) { - return await _db.Queryable().Select(expression).ToListAsync(); + return await _db.CopyNew().Queryable().Select(expression).ToListAsync(); } /// @@ -313,7 +313,7 @@ namespace Admin.Core.Repository /// public async Task> QueryAsync(Expression> expression, Expression> whereExpression, string strOrderByFileds) { - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync(); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync(); } /// @@ -325,8 +325,8 @@ namespace Admin.Core.Repository /// 数据列表 public async Task> QueryAsync(Expression> whereExpression, string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList()); - return await _db.Queryable().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList()); + return await _db.CopyNew().Queryable().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToListAsync(); } /// /// 功能描述:查询一个列表 @@ -337,8 +337,8 @@ namespace Admin.Core.Repository /// public async Task> QueryAsync(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true) { - //return await Task.Run(() => _db.Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList()); - return await _db.Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList()); + return await _db.CopyNew().Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync(); } /// @@ -350,8 +350,8 @@ namespace Admin.Core.Repository /// 数据列表 public async Task> QueryAsync(string strWhere, string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync(); } @@ -368,8 +368,8 @@ namespace Admin.Core.Repository int intTop, string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList()); - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList()); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToListAsync(); } /// @@ -385,8 +385,8 @@ namespace Admin.Core.Repository int intTop, string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList()); - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToListAsync(); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList()); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToListAsync(); } /// @@ -397,7 +397,7 @@ namespace Admin.Core.Repository /// 泛型集合 public async Task> QuerySqlAsync(string strSql, SugarParameter[] parameters = null) { - return await _db.Ado.SqlQueryAsync(strSql, parameters); + return await _db.CopyNew().Ado.SqlQueryAsync(strSql, parameters); } /// @@ -408,7 +408,7 @@ namespace Admin.Core.Repository /// 泛型集合 public async Task ExecSqlAsync(string strSql, SugarParameter[] parameters = null) { - return await _db.Ado.ExecuteCommandAsync(strSql, parameters); + return await _db.CopyNew().Ado.ExecuteCommandAsync(strSql, parameters); } /// @@ -419,7 +419,7 @@ namespace Admin.Core.Repository /// DataTable public async Task QueryTableAsync(string strSql, SugarParameter[] parameters = null) { - return await _db.Ado.GetDataTableAsync(strSql, parameters); + return await _db.CopyNew().Ado.GetDataTableAsync(strSql, parameters); } /// @@ -437,8 +437,8 @@ namespace Admin.Core.Repository int intPageSize, string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize)); - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageListAsync(intPageIndex, intPageSize); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize)); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageListAsync(intPageIndex, intPageSize); } /// @@ -457,8 +457,8 @@ namespace Admin.Core.Repository string strOrderByFileds) { - //return await Task.Run(() => _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize)); - return await _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageListAsync(intPageIndex, intPageSize); + //return await Task.Run(() => _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize)); + return await _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageListAsync(intPageIndex, intPageSize); } @@ -475,7 +475,7 @@ namespace Admin.Core.Repository { RefAsync totalCount = 0; - var list = await _db.Queryable() + var list = await _db.CopyNew().Queryable() .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) .ToPageListAsync(intPageIndex, intPageSize, totalCount); @@ -503,9 +503,9 @@ namespace Admin.Core.Repository { if (whereLambda == null) { - return await _db.Queryable(joinExpression).Select(selectExpression).ToListAsync(); + return await _db.CopyNew().Queryable(joinExpression).Select(selectExpression).ToListAsync(); } - return await _db.Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToListAsync(); + return await _db.CopyNew().Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToListAsync(); } @@ -532,7 +532,7 @@ namespace Admin.Core.Repository { RefAsync totalCount = 0; - var list = await _db.Queryable(joinExpression) + var list = await _db.CopyNew().Queryable(joinExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) @@ -565,7 +565,7 @@ namespace Admin.Core.Repository { RefAsync totalCount = 0; - var list = await _db.Queryable(joinExpression).GroupBy(groupExpression) + var list = await _db.CopyNew().Queryable(joinExpression).GroupBy(groupExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) @@ -580,7 +580,7 @@ namespace Admin.Core.Repository public TEntity QueryById(object objId) { - return _db.Queryable().In(objId).Single(); + return _db.CopyNew().Queryable().In(objId).Single(); } /// ().WithCacheIF(blnUseCache).In(objId).Single(); + return _db.CopyNew().Queryable().WithCacheIF(blnUseCache).In(objId).Single(); } /// QueryByIDs(object[] lstIds) { - return _db.Queryable().In(lstIds).ToList(); + return _db.CopyNew().Queryable().In(lstIds).ToList(); } /// > insertColumns = null) { - var insert = _db.Insertable(entity); + var insert = _db.CopyNew().Insertable(entity); if (insertColumns == null) { return insert.ExecuteReturnIdentity(); @@ -644,7 +644,7 @@ namespace Admin.Core.Repository /// listEntity) { - return _db.Insertable(listEntity.ToArray()).ExecuteCommand(); + return _db.CopyNew().Insertable(listEntity.ToArray()).ExecuteCommand(); } /// 0; + //return Task.Run(() = _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) 0); + return _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) > 0; } public bool Update(object operateAnonymousObjects) { - return _db.Updateable(operateAnonymousObjects).ExecuteCommand() > 0; + return _db.CopyNew().Updateable(operateAnonymousObjects).ExecuteCommand() > 0; } public bool Update( @@ -686,7 +686,7 @@ namespace Admin.Core.Repository ) { - IUpdateable up = _db.Updateable(entity); + IUpdateable up = _db.CopyNew().Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); @@ -709,9 +709,9 @@ namespace Admin.Core.Repository /// (id).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable(id).ExecuteCommandHasChange(); } /// entitys) { - //var i = Task.Run(() = _db.Deleteable(entitys).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable(entitys).ExecuteCommandHasChange(); } @@ -747,7 +747,7 @@ namespace Admin.Core.Repository /// Query() { - return _db.Queryable().ToList(); + return _db.CopyNew().Queryable().ToList(); } /// Query(string strWhere) { - //return Task.Run(() = _db.Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList(); } /// Query(Expression> whereExpression) { - return _db.Queryable().WhereIF(whereExpression != null, whereExpression).ToList(); + return _db.CopyNew().Queryable().WhereIF(whereExpression != null, whereExpression).ToList(); } /// Query(Expression> expression) { - return _db.Queryable().Select(expression).ToList(); + return _db.CopyNew().Queryable().Select(expression).ToList(); } /// Query(Expression> expression, Expression> whereExpression, string strOrderByFileds) { - return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList(); + return _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList(); } /// Query(Expression> whereExpression, string strOrderByFileds) { - //return Task.Run(() = _db.Queryable().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToList(); } /// Query(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true) { - //return Task.Run(() = _db.Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList(); } /// Query(string strWhere, string strOrderByFileds) { - //return Task.Run(() = _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList(); } @@ -851,8 +851,8 @@ namespace Admin.Core.Repository int intTop, string strOrderByFileds) { - //return Task.Run(() = _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList(); } /// ().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList(); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList(); } /// QuerySql(string strSql, SugarParameter[] parameters = null) { - return _db.Ado.SqlQuery(strSql, parameters); + return _db.CopyNew().Ado.SqlQuery(strSql, parameters); } /// ().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize); } /// ().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize); + //return Task.Run(() = _db.CopyNew().Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize); } @@ -958,7 +958,7 @@ namespace Admin.Core.Repository { int totalCount = 0; - var list = _db.Queryable() + var list = _db.CopyNew().Queryable() .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) .ToPageList(intPageIndex, intPageSize, ref totalCount); @@ -986,9 +986,9 @@ namespace Admin.Core.Repository { if (whereLambda == null) { - return _db.Queryable(joinExpression).Select(selectExpression).ToList(); + return _db.CopyNew().Queryable(joinExpression).Select(selectExpression).ToList(); } - return _db.Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToList(); + return _db.CopyNew().Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToList(); } @@ -1015,7 +1015,7 @@ namespace Admin.Core.Repository { int totalCount = 0; - var list = _db.Queryable(joinExpression) + var list = _db.CopyNew().Queryable(joinExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) @@ -1048,7 +1048,7 @@ namespace Admin.Core.Repository { int totalCount = 0; - var list = _db.Queryable(joinExpression).GroupBy(groupExpression) + var list = _db.CopyNew().Queryable(joinExpression).GroupBy(groupExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) diff --git a/Admin.Core.Repository/Repository_New/BinFeedingReportRepository.cs b/Admin.Core.Repository/Repository_New/BinFeedingReportRepository.cs new file mode 100644 index 0000000..95e5ee7 --- /dev/null +++ b/Admin.Core.Repository/Repository_New/BinFeedingReportRepository.cs @@ -0,0 +1,15 @@ +using Admin.Core.IRepository; +using Admin.Core.Model; + +namespace Admin.Core.Repository +{ + /// + /// BinFeedingReportRepository + /// + public class BinFeedingReportRepository : BaseRepository, IBinFeedingReportRepository + { + public BinFeedingReportRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + } +} \ No newline at end of file diff --git a/Admin.Core.Repository/Repository_New/RT_planRepository.cs b/Admin.Core.Repository/Repository_New/RT_planRepository.cs index ab27c82..ab893ea 100644 --- a/Admin.Core.Repository/Repository_New/RT_planRepository.cs +++ b/Admin.Core.Repository/Repository_New/RT_planRepository.cs @@ -1,7 +1,6 @@ using Admin.Core.IRepository; using Admin.Core.Model; using Admin.Core.Model.ViewModels; -using MySqlX.XDevAPI.Common; using SqlSugar; using System.Collections.Generic; using System.Data; @@ -9,9 +8,9 @@ using System.Threading.Tasks; namespace Admin.Core.Repository { - /// - /// RT_planRepository - /// + /// + /// RT_planRepository + /// public class RT_planRepository : BaseRepository, IRT_planRepository { public RT_planRepository(IUnitOfWork unitOfWork) : base(unitOfWork) diff --git a/Admin.Core.Repository/Repository_New/xl_weighRepository.cs b/Admin.Core.Repository/Repository_New/xl_weighRepository.cs new file mode 100644 index 0000000..aca4465 --- /dev/null +++ b/Admin.Core.Repository/Repository_New/xl_weighRepository.cs @@ -0,0 +1,15 @@ +using Admin.Core.IRepository; +using Admin.Core.Model; + +namespace Admin.Core.Repository +{ + /// + /// xl_weighRepository + /// + public class xl_weighRepository : BaseRepository, Ixl_weighRepository + { + public xl_weighRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + } +} \ No newline at end of file diff --git a/Admin.Core.RunPlc/Admin.Core.RunPlc.csproj b/Admin.Core.RunPlc/Admin.Core.RunPlc.csproj index d258c63..c808a79 100644 --- a/Admin.Core.RunPlc/Admin.Core.RunPlc.csproj +++ b/Admin.Core.RunPlc/Admin.Core.RunPlc.csproj @@ -8,6 +8,8 @@ + + diff --git a/Admin.Core.RunPlc/IRunPlcService.cs b/Admin.Core.RunPlc/IRunPlcService.cs index 11e3901..96403fd 100644 --- a/Admin.Core.RunPlc/IRunPlcService.cs +++ b/Admin.Core.RunPlc/IRunPlcService.cs @@ -4,5 +4,7 @@ namespace Admin.Core.RunPlc public interface IRunPlcService { Task StartPlcAsync(); + + Task StartAlarmAsync(); } } diff --git a/Admin.Core.RunPlc/RunPlcService.cs b/Admin.Core.RunPlc/RunPlcService.cs index 42dfe75..dc99255 100644 --- a/Admin.Core.RunPlc/RunPlcService.cs +++ b/Admin.Core.RunPlc/RunPlcService.cs @@ -1,5 +1,8 @@ using Admin.Core.Common; +using Admin.Core.IService; +using Admin.Core.Model; using Admin.Core.PlcServer; +using log4net; using System.Timers; namespace Admin.Core.RunPlc @@ -9,11 +12,17 @@ namespace Admin.Core.RunPlc /// public class RunPlcService : IRunPlcService { - System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器,设置间隔时间为5000毫秒; + + private readonly IPmt_AlarmServices _pmtAlarmServices; + private readonly ILR_AlarmlogServices _lrAlarmlogServices; + private static readonly log4net.ILog log = LogManager.GetLogger(typeof(RunPlcService)); + bool flag = true; #region 构造函数 - public RunPlcService() + public RunPlcService(IPmt_AlarmServices pmtAlarmServices, ILR_AlarmlogServices lrAlarmlogServices) { + _pmtAlarmServices = pmtAlarmServices; + _lrAlarmlogServices = lrAlarmlogServices; StartSiemensPlcServer();//西门子 } #endregion @@ -21,6 +30,7 @@ namespace Admin.Core.RunPlc #region 心跳 public Task StartPlcAsync() { + System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器,设置间隔时间为5000毫秒; timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecSiemensHeartTask); timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它, @@ -30,25 +40,26 @@ namespace Admin.Core.RunPlc private static void StartSiemensPlcServer() { var allPlcServices = Appsettings.app("PLCServer").ToList(); - foreach (var item in allPlcServices) + for (int i = 0; i < allPlcServices.Count; i++) { PlcModel model = new PlcModel(); - model.Id = item.Id; - model.EquipName = item.EquipName; - model.IP = item.IP; - model.Port = item.Port; - model.plc = new SiemensPlc(item.IP, item.Port); + model.Id = allPlcServices[i].Id; + model.EquipName = allPlcServices[i].EquipName; + model.IP = allPlcServices[i].IP; + model.Port = allPlcServices[i].Port; + model.plc = new SiemensPlc(allPlcServices[i].IP, allPlcServices[i].Port); PlcHelper.siemensList.Add(model); } } #endregion #region 心跳检测 - private async void ExecSiemensHeartTask(object? sender, ElapsedEventArgs e) + private async void ExecSiemensHeartTask(object? sender, ElapsedEventArgs e) { - foreach (var item in PlcHelper.siemensList) + var plcList = PlcHelper.siemensList.Where(d => d.EquipName.Equals("小料PLC")).ToList(); + foreach (var item in plcList) { - if (await item.plc.Read("M100")) + if (await item.plc.Read("DB104.DBW0")) { item.IsConnect = true; item.plc.IsConnected = true; @@ -78,5 +89,97 @@ namespace Admin.Core.RunPlc } } #endregion + + public Task StartAlarmAsync() + { + //System.Timers.Timer timer = new System.Timers.Timer(1000);//创建定时器,设置间隔时间为1000毫秒; + //timer.Elapsed += new System.Timers.ElapsedEventHandler(StartAlarm); //到达时间的时候执行事件; + //timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); + //timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它, + //timer.Start();//timer.Start()的内部原理还是设置timer.Enabled = true; + + return Task.CompletedTask; + } + + + + private async void StartAlarm(object source, System.Timers.ElapsedEventArgs e) + { + if (flag) + { + flag = false; + try + { + var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("小料PLC")); + if (plcList.plc.IsConnected) + { + List addAlarmList = new List(); + List updateAlarmList = new List(); + List list = _pmtAlarmServices.QueryAsync().Result; + Console.WriteLine("=======================开始================================"); + + int i= 0; + do + { + Console.WriteLine(i); + await ReadAlarm(plcList, list[i]); + i++; + } while (list.Count >= i); + + Console.WriteLine("=======================结束================================"); + } + + } + catch (Exception ex) + { + log.Error(ex.Message); + } + finally { flag = true; } + } + } + + private async Task ReadAlarm(PlcModel plcList, Pmt_Alarm item) + { + + bool result = await plcList.plc.ReadBoolAsync(item.Alarm_Point); + + Console.WriteLine(item.Alarm_Point + ":" + result); + if (result) + { + var alarm =await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID && d.Alarm_Status == 1); + if (alarm == null) + { + LR_Alarmlog lR_Alarmlog = new LR_Alarmlog(); + + lR_Alarmlog.Equip_Code = "01"; + lR_Alarmlog.Alarm_ID = item.Alarm_ID; + lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + lR_Alarmlog.Alarm_Status = 1; + lR_Alarmlog.Alarm_GUID = "01"; + + _ = _lrAlarmlogServices.AddAsync(lR_Alarmlog).Result; + } + else + { + //alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); + //alarm.Alarm_Status = 1; + //_= _lrAlarmlogServices.UpdateAsync(alarm).Result; + } + } + else + { + var alarm = _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID && d.Alarm_Status == 1).Result; + if (alarm != null) + { + alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + alarm.Alarm_Status = 0; + _ = _lrAlarmlogServices.UpdateAsync(alarm).Result; + } + + } + + + } + } } diff --git a/Admin.Core.Service/Admin.Core.Service.csproj b/Admin.Core.Service/Admin.Core.Service.csproj index ebd04d6..879f9bb 100644 --- a/Admin.Core.Service/Admin.Core.Service.csproj +++ b/Admin.Core.Service/Admin.Core.Service.csproj @@ -20,4 +20,10 @@ + + + E:\普力通处理\dll\HslCommunication.dll + + + diff --git a/Admin.Core.Service/Service_New/BinFeedingReportServices.cs b/Admin.Core.Service/Service_New/BinFeedingReportServices.cs new file mode 100644 index 0000000..573e804 --- /dev/null +++ b/Admin.Core.Service/Service_New/BinFeedingReportServices.cs @@ -0,0 +1,17 @@ +using Admin.Core.IRepository; +using Admin.Core.Service; +using Admin.Core.IService; +using Admin.Core.Model; + +namespace Admin.Core.Service +{ + public class BinFeedingReportServices : BaseServices, IBinFeedingReportServices + { + private readonly IBaseRepository _dal; + public BinFeedingReportServices(IBaseRepository dal) + { + this._dal = dal; + base.BaseDal = dal; + } + } +} \ No newline at end of file diff --git a/Admin.Core.Service/Service_New/Hw_WarehouseServices.cs b/Admin.Core.Service/Service_New/Hw_WarehouseServices.cs index 414ca71..093daa8 100644 --- a/Admin.Core.Service/Service_New/Hw_WarehouseServices.cs +++ b/Admin.Core.Service/Service_New/Hw_WarehouseServices.cs @@ -44,9 +44,10 @@ namespace Admin.Core.Service /// /// 扫描桶二维码,获取绑定的小料配方 /// - /// 桶条码 + /// 反应釜 + /// 计划Id + /// 料桶Id /// - /// public async Task GetXlInfo(string kettleBarCode, string planId, string code) { List list = new List(); @@ -55,7 +56,7 @@ namespace Admin.Core.Service { Hw_Barrel hw = await _barrel.FirstAsync(d => d.IsEnable == "是" && d.BarCode == code); if (hw == null) { return null; } - var recipe = await _recipeRepository.FirstAsync(d => d.Recipe_Verify == 1 && d.Recipe_Code == hw.MaterialID); + var recipe = await _recipeRepository.FirstAsync(d => d.Recipe_Verify == 1 && d.ID == hw.MaterialID); if (recipe == null) { return null; } var materialList = await _lrWeighRepository.QueryAsync(d => d.Plan_ID == hw.PlanId && d.Recipe_ID == recipe.ID); if (materialList.Count() == 0) { return null; } @@ -154,8 +155,9 @@ namespace Admin.Core.Service view.MaterialName = sub.MaterialName; view.BinId = sub.BinId; view.MaterialType = sub.MaterialType; - view.SetWeight = sub.SetWeight; + view.SetWeight = sub.SetWeight- sub.Tare;//设置重量减去皮重 view.SetError = sub.SetError; + view.Tare = sub.Tare; list.Add(view); }); WarehouseView warehouseView = new WarehouseView() @@ -246,81 +248,77 @@ namespace Admin.Core.Service try { - //log.Info("开始"); - var solventPlc = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC")); - log.Info($"PLC状态:{solventPlc.plc.IsConnected}"); - if (solventPlc.plc.IsConnected) + log.Info("开始投料"); + + #region 记录数据 + //同时记录该扫码到数据库中 + wh = await _wareHouse.FirstAsync(d => d.BarCode == view.KCode); + if (wh == null) return false; + subList = await _wareHouse_Sub.QueryAsync(d => d.MainId == wh.ID); + if (subList.Count == 0) return false; + log.Info("开启模式"); + if (view.State == 1) { - #region 记录数据 - //同时记录该扫码到数据库中 - wh = await _wareHouse.FirstAsync(d => d.BarCode == view.KCode); - if (wh == null) return false; - subList = await _wareHouse_Sub.QueryAsync(d => d.MainId == wh.ID); - if (subList.Count == 0) return false; - log.Info("开启模式"); - if (view.State == 1) - { - message = "开启"; - } - if (view.State == 0) - { - message = "关闭"; - } - if (string.IsNullOrEmpty(message)) - { - log.Error("传递状态为空!"); - return false; - } - foreach (var item in view.Child) + message = "开启"; + } + if (view.State == 0) + { + message = "关闭"; + } + if (string.IsNullOrEmpty(message)) + { + log.Error("传递状态为空!"); + return false; + } + foreach (var item in view.Child) + { + Hw_FeedReport hw = new Hw_FeedReport() { - Hw_FeedReport hw = new Hw_FeedReport() - { - WID = wh.ID, - PlanId = view.PlanId, - WName = wh.Name, - WCode = wh.BarCode, - MaterialId = item.MatCode, - MaterialName = item.MatName, - MCode = item.MatCode, - MType = item.MatType, - IsTrue = message, - CreateTime = DateTime.Now, - WholePackage = item.WholePackage.Trim() - }; - report.Add(hw); - } - await _feed.AddAsync(report); + WID = wh.ID, + PlanId = view.PlanId, + WName = wh.Name, + WCode = wh.BarCode, + MaterialId = item.MatCode, + MaterialName = item.MatName, + MCode = item.MatCode, + MType = item.MatType, + IsTrue = message, + CreateTime = DateTime.Now, + WholePackage = item.WholePackage.Trim() + }; + report.Add(hw); + } + await _feed.AddAsync(report); - if (string.IsNullOrEmpty(name)) - { - log.Error("点位名称为空!"); - return false; - } - bool result = solventPlc.plc.WriteInt16(name, view.State.ToString());//反应釜点位 - if (result) + if (string.IsNullOrEmpty(name)) + { + log.Error("点位名称为空!"); + return false; + } + var s7 = PlcConnect.Instance; + var result = s7.Write(name,short.Parse(view.State.ToString()));//反应釜点位 + log.Error($"反应釜开启点位状态:{result.IsSuccess},返回信息:{result.Message}"); + if (result.IsSuccess) + { + if (view.State == 1) { - if (view.State == 1) + foreach (var item in view.Child.Where(d=>d.MatType== "散装")) { - await _feed.AddAsync(report); + } - return result; } - else - { - log.Error("写入点位失败!"); - return result; - } - #endregion + return result.IsSuccess; } else { - return false; + log.Error("反应釜写入点位失败!"); + return result.IsSuccess; } + #endregion } catch (Exception ex) { - log.Info("异常:"+ex.Message); - log.Error(ex.Message); + log.Error($"异常:{ex.Message}"); return false; } } diff --git a/Admin.Core.Service/Service_New/SolventServices.cs b/Admin.Core.Service/Service_New/SolventServices.cs index 9928b49..466ff12 100644 --- a/Admin.Core.Service/Service_New/SolventServices.cs +++ b/Admin.Core.Service/Service_New/SolventServices.cs @@ -8,7 +8,8 @@ using System.Collections.Generic; using log4net; using Admin.Core.PlcServer; using System; -using NPOI.SS.Formula.Functions; +using Admin.Core.Common; +using NPOI.OpenXmlFormats.Dml.Diagram; namespace Admin.Core.Service { @@ -49,186 +50,319 @@ namespace Admin.Core.Service /// /// 验证成功后传递过来相关数据 /// 是否执行成功! - public async Task ExecPlcState(VerifyView view) + public async Task> ExecPlcState(VerifyView view) { + MessageModel result = new MessageModel(); try { - var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC")); - if (plcList.plc.IsConnected) + if (view.Weighbridge == "1号地磅") { - if (view.Weighbridge == "1号地磅") { - int rate = Convert.ToInt32(view.Rate * 100); - bool rr=plcList.plc.WriteInt16("DB110.DBW10.0", rate.ToString());//传入固率 - bool barCode = plcList.plc.WriteInt16("DB110.DBW1768.0", "1"); - if (barCode) + var s7 = PlcConnect.Instance; + + + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + if (rtPlanList.Count > 0) { - Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport() + if (string.IsNullOrEmpty(view.Plan_Id)) { - PlanId = view.Plan_Id, - FinishedNum = plcList.plc.ReadInt16("DB110.DBW1758.0"), - RMatCode = view.RMatCode, - MaterialID = view.MaterialID, - MaterialName = view.MaterialName, - Weight = view.MaterialWeight, - WholeMaterial = view.WholeMaterial - }; - - var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); - if (rtPlanList.Count > 0) + var r = rtPlanList.FirstOrDefault(); + view.Plan_Id = r.Plan_Id; + } + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id); + List list = new List(); + if (view.BarCodeList!=null) { - if (string.IsNullOrEmpty(view.Plan_Id)) + foreach (var item in view.BarCodeList) { - var r= rtPlanList.FirstOrDefault(); - view.Plan_Id = r.Plan_Id; + string[] str = item.Split("-"); + Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport() + { + PlanId = view.Plan_Id, + Batch = rtPlan.Batch, + ProductName = rtPlan.ProductName, + FinishedNum = s7.ReadInt16("DB110.DBW1758.0").Content, + RMatCode = view.RMatCode, + MaterialID = view.MaterialID, + MaterialName = view.MaterialName, + Weight = view.MaterialWeight, + WholeMaterial = view.WholeMaterial, + Material_InventoryCode = str[0], + Material_BatchNumber = str[1], + Material_SerialCode = str[2], + BarCodeStr = item, + CreateTime = DateTime.Now + }; + list.Add(report); } - var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id); - - if (plcList.plc.ReadInt16("DB110.DBW8") != 250) + int i = await _solventErrorPreventionReportRepository.AddAsync(list); + } + + + + + #region MyRegion + //if (s7.ReadInt16("DB110.DBW8").Content != 250) + //{ + //var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id); + //if (hwWeighList != null) + //{ + + // if (hwWeighList.Count() > (rtPlan.Exec_Num + 1)) + // { + // rtPlan.Exec_Num = 1; + // } + // else if (hwWeighList.Count() == (rtPlan.Exec_Num + 1)) + // { + // rtPlan.Exec_Num = rtPlan.Exec_Num + 1; + // } + // else + // { + // rtPlan.Exec_Num = 1; + // } + //} + //else + //{ + // rtPlan.Exec_Num = 0; + //} + //var num = s7.ReadInt16("DB110.DBW1758.0").Content; + //if (num == 0) + //{ + // rtPlan.Exec_Num = 1; + //} + //else + //{ + // rtPlan.Exec_Num = num; + //} + ////rtPlan.Exec_Num = plcList.plc.ReadInt16("DB110.DBW1758.0"); + //保存本次数据 + + #endregion + + var cylinderList = _hwCylinderRepository.Query(); + if (cylinderList.Count == 0) + { + result.success = false; + result.msg = "未获查询到拉缸信息"; + return result; + } + if (view.CylinderBarCode.Trim() == "00000000") + { + rtPlan.CylinderName = "00000000"; + rtPlan.CylinderBarCode = "00000000"; + await _planRepository.UpdateExecDb(rtPlan);//更新数据库 + result.success = true; + result.msg = "更新拉缸信息成功!"; + + int rate = Convert.ToInt32(view.Rate * 100); + var writeRate = s7.Write("DB110.DBW10.0", short.Parse(rate.ToString()));//传入固率 + log.Info($"1号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}"); + var barCode = s7.Write("DB110.DBW1768.0", short.Parse("1")); //写入启动称量信号 + log.Info($"1号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}"); + if (barCode.IsSuccess && writeRate.IsSuccess) { - //var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id); - //if (hwWeighList != null) - //{ - - // if (hwWeighList.Count() > (rtPlan.Exec_Num + 1)) - // { - // rtPlan.Exec_Num = 1; - // } - // else if (hwWeighList.Count() == (rtPlan.Exec_Num + 1)) - // { - // rtPlan.Exec_Num = rtPlan.Exec_Num + 1; - // } - // else - // { - // rtPlan.Exec_Num = 1; - // } - //} - var num = plcList.plc.ReadInt16("DB110.DBW1758.0"); - if (num==0) - { - rtPlan.Exec_Num = 1; - } - else - { - rtPlan.Exec_Num = num; - } - //rtPlan.Exec_Num = plcList.plc.ReadInt16("DB110.DBW1758.0"); - //保存本次数据 - int i = await _solventErrorPreventionReportRepository.AddAsync(report); - var cylinderList = _hwCylinderRepository.Query(); - if (cylinderList.Count == 0) - { - return false; - } - if (view.CylinderBarCode.Trim()=="00000000") + result.success = true; + result.msg = "更新计划信息成功!称量开始!"; + } + else + { + result.success = false; + result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]"; + } + } + else + { + Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim()); + if (hw_Cylinder == null) + { + result.success = false; + result.msg = $"未查询到拉缸信息!拉缸二维码:【{view.CylinderBarCode}】"; + } + else + { + rtPlan.CylinderName = hw_Cylinder.Name; + rtPlan.CylinderBarCode = hw_Cylinder.BarCode; + log.Info(view.CylinderBarCode); + await _planRepository.UpdateExecDb(rtPlan);//更新数据库 + + int rate = Convert.ToInt32(view.Rate * 100); + var writeRate = s7.Write("DB110.DBW10.0", short.Parse(rate.ToString()));//传入固率 + log.Info($"1号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}"); + var barCode = s7.Write("DB110.DBW1768.0", short.Parse("1")); //写入启动称量信号 + log.Info($"1号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}"); + if (barCode.IsSuccess && writeRate.IsSuccess) { - - rtPlan.CylinderName = "00000000"; - rtPlan.CylinderBarCode = "00000000"; - await _planRepository.UpdateExecDb(rtPlan);//更新数据库 + result.success = true; + result.msg = "更新计划信息成功!称量开始!"; } else { - Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim()); - rtPlan.CylinderName = hw_Cylinder.Name; - rtPlan.CylinderBarCode = hw_Cylinder.BarCode; - log.Info(view.CylinderBarCode); - await _planRepository.UpdateExecDb(rtPlan);//更新数据库 + result.success = false; + result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]"; } - - return true; } } - //等待 - return false; } - return false; } - else if (view.Weighbridge == "2号地磅") + } + if (view.Weighbridge == "2号地磅") + { { - int rate = Convert.ToInt32(view.Rate * 100); - plcList.plc.WriteInt16("DB110.DBW10.0", rate.ToString());//传入固率 - bool barCode = plcList.plc.WriteInt16("DB110.DBW1768.0", "1"); - // bool matCode = plcList.plc.WriteInt16("DB110.DBW482.0", "1");//执行启动 + var s7 = PlcConnect.Instance; - if (barCode) + + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + if (rtPlanList.Count > 0) { - Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport() + if (string.IsNullOrEmpty(view.Plan_Id)) { - PlanId = view.Plan_Id, - FinishedNum = plcList.plc.ReadInt16("DB110.DBW1758.0"), - RMatCode = view.RMatCode, - MaterialID = view.MaterialID, - MaterialName = view.MaterialName, - Weight = view.MaterialWeight, - WholeMaterial = view.WholeMaterial - }; - - var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); - if (rtPlanList.Count > 0) + var r = rtPlanList.FirstOrDefault(); + view.Plan_Id = r.Plan_Id; + } + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id); + List list = new List(); + if (view.BarCodeList != null) { - var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id); - - if (plcList.plc.ReadInt16("DB110.DBW8") != 250) + foreach (var item in view.BarCodeList) { - //var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id); - //if (hwWeighList != null) - //{ - - // if (hwWeighList.Count() > (rtPlan.Exec_Num + 1)) - // { - // rtPlan.Exec_Num = 1; - // } - // else if (hwWeighList.Count() == (rtPlan.Exec_Num + 1)) - // { - // rtPlan.Exec_Num = rtPlan.Exec_Num + 1; - // } - // else - // { - // rtPlan.Exec_Num = 1; - // } - //} - var num = plcList.plc.ReadInt16("DB110.DBW1758.0"); - if (num == 0) + string[] str = item.Split("-"); + Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport() { - rtPlan.Exec_Num = 1; - } - else - { - rtPlan.Exec_Num = num; - } + PlanId = view.Plan_Id, + Batch = rtPlan.Batch, + ProductName = rtPlan.ProductName, + FinishedNum = s7.ReadInt16("DB111.DBW1758.0").Content, + RMatCode = view.RMatCode, + MaterialID = view.MaterialID, + MaterialName = view.MaterialName, + Weight = view.MaterialWeight, + WholeMaterial = view.WholeMaterial, + Material_InventoryCode = str[0], + Material_BatchNumber = str[1], + Material_SerialCode = str[2], + BarCodeStr = item, + CreateTime = DateTime.Now + }; + list.Add(report); + } + int i = await _solventErrorPreventionReportRepository.AddAsync(list); + } - //保存本次数据 - int i = await _solventErrorPreventionReportRepository.AddAsync(report); - var cylinderList = _hwCylinderRepository.Query(); - if (cylinderList.Count == 0) - { - return false; - } - Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim()); + + + + #region MyRegion + //if (s7.ReadInt16("DB111.DBW8").Content != 250) + //{ + //var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id); + //if (hwWeighList != null) + //{ + + // if (hwWeighList.Count() > (rtPlan.Exec_Num + 1)) + // { + // rtPlan.Exec_Num = 1; + // } + // else if (hwWeighList.Count() == (rtPlan.Exec_Num + 1)) + // { + // rtPlan.Exec_Num = rtPlan.Exec_Num + 1; + // } + // else + // { + // rtPlan.Exec_Num = 1; + // } + //} + //else + //{ + // rtPlan.Exec_Num = 0; + //} + //var num = s7.ReadInt16("DB111.DBW1758.0").Content; + //if (num == 0) + //{ + // rtPlan.Exec_Num = 1; + //} + //else + //{ + // rtPlan.Exec_Num = num; + //} + ////rtPlan.Exec_Num = plcList.plc.ReadInt16("DB111.DBW1758.0"); + //保存本次数据 + + #endregion + + var cylinderList = _hwCylinderRepository.Query(); + if (cylinderList.Count == 0) + { + result.success = false; + result.msg = "未获查询到拉缸信息"; + return result; + } + if (view.CylinderBarCode.Trim() == "00000000") + { + rtPlan.CylinderName = "00000000"; + rtPlan.CylinderBarCode = "00000000"; + await _planRepository.UpdateExecDb(rtPlan);//更新数据库 + result.success = true; + result.msg = "更新拉缸信息成功!"; + + int rate = Convert.ToInt32(view.Rate * 100); + var writeRate = s7.Write("DB111.DBW10.0", short.Parse(rate.ToString()));//传入固率 + log.Info($"2号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}"); + var barCode = s7.Write("DB111.DBW1768.0", short.Parse("1")); //写入启动称量信号 + log.Info($"2号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}"); + if (barCode.IsSuccess && writeRate.IsSuccess) + { + result.success = true; + result.msg = "更新计划信息成功!称量开始!"; + } + else + { + result.success = false; + result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]"; + } + } + else + { + Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim()); + if (hw_Cylinder == null) + { + result.success = false; + result.msg = $"未查询到拉缸信息!拉缸二维码:【{view.CylinderBarCode}】"; + } + else + { rtPlan.CylinderName = hw_Cylinder.Name; rtPlan.CylinderBarCode = hw_Cylinder.BarCode; log.Info(view.CylinderBarCode); await _planRepository.UpdateExecDb(rtPlan);//更新数据库 - return true; + + int rate = Convert.ToInt32(view.Rate * 100); + var writeRate = s7.Write("DB111.DBW10.0", short.Parse(rate.ToString()));//传入固率 + log.Info($"2号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}"); + var barCode = s7.Write("DB111.DBW1768.0", short.Parse("1")); //写入启动称量信号 + log.Info($"2号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}"); + if (barCode.IsSuccess && writeRate.IsSuccess) + { + result.success = true; + result.msg = "更新计划信息成功!称量开始!"; + } + else + { + result.success = false; + result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]"; + } } } - //等待 - return false; } - return false; } - return false; - } - else - { - return true; } + return result; } catch (System.Exception ex) { log.Info(ex.Message); - return false; + result.success = false; + result.msg = $"执行数据异常:{ex.Message}"; + return result; } } @@ -246,117 +380,100 @@ namespace Admin.Core.Service { try { + var s7 = PlcConnect.Instance; var result = await _planRepository.QueryAsync(d => d.Plan_Id == planId && d.PumpBarCode == pumpCode && d.CylinderBarCode == cylinderCode); if (result.Count > 0) { - var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC")); - if (plcList.plc.IsConnected) - { - #region 写入PLC - - var pumpList = _hwPumpRepository.Query(); - if (pumpList.Count == 0) { return false; } - var pump = pumpList.FirstOrDefault(d => d.BarCode == pumpCode); - if (pump == null) { return false; } - switch (pump.RowNum) - { - case 1: - plcList.plc.WriteInt16("DB110.DBW282.0", "1"); - break; - case 2: - plcList.plc.WriteInt16("DB110.DBW294.0", "1"); - break; - case 3: - plcList.plc.WriteInt16("DB110.DBW306.0", "1"); - break; - case 4: - plcList.plc.WriteInt16("DB110.DBW318.0", "1"); - break; - case 5: - plcList.plc.WriteInt16("DB110.DBW330.0", "1"); - break; - case 6: - plcList.plc.WriteInt16("DB110.DBW342.0", "1"); - break; - case 7: - plcList.plc.WriteInt16("DB110.DBW354.0", "1"); - break; - case 8: - plcList.plc.WriteInt16("DB110.DBW366.0", "1"); - break; - case 9: - plcList.plc.WriteInt16("DB110.DBW 378.0", "1"); - break; - default: - break; - } - - #endregion + #region 写入PLC - return true; - } - else + var pumpList = _hwPumpRepository.Query(); + if (pumpList.Count == 0) { return false; } + var pump = pumpList.FirstOrDefault(d => d.BarCode == pumpCode); + if (pump == null) { return false; } + switch (pump.RowNum) { - return false; + case 1: + s7.Write("DB110.DBW282.0",short.Parse("1")); + break; + case 2: + s7.Write("DB110.DBW294.0", short.Parse("1")); + break; + case 3: + s7.Write("DB110.DBW306.0", short.Parse("1")); + break; + case 4: + s7.Write("DB110.DBW318.0", short.Parse("1")); + break; + case 5: + s7.Write("DB110.DBW330.0", short.Parse("1")); + break; + case 6: + s7.Write("DB110.DBW342.0", short.Parse("1")); + break; + case 7: + s7.Write("DB110.DBW354.0", short.Parse("1")); + break; + case 8: + s7.Write("DB110.DBW366.0", short.Parse("1")); + break; + case 9: + s7.Write("DB110.DBW 378.0", short.Parse("1")); + break; + default: + break; } - + + #endregion + + return true; } else { #region 写入PLC - var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC")); - if (plcList.plc.IsConnected) + var pumpList = _hwPumpRepository.Query(); + if (pumpList.Count > 0) { return false; } + var pump = pumpList.FirstOrDefault(d => d.BarCode == pumpCode); + if (pump == null) { return false; } + switch (pump.RowNum) { - var pumpList = _hwPumpRepository.Query(); - if (pumpList.Count > 0) { return false; } - var pump = pumpList.FirstOrDefault(d => d.BarCode == pumpCode); - if (pump == null) { return false; } - switch (pump.RowNum) - { - case 1: - plcList.plc.WriteInt16("DB110.DBW282.0", "2"); - break; - case 2: - plcList.plc.WriteInt16("DB110.DBW294.0", "2"); - break; - case 3: - plcList.plc.WriteInt16("DB110.DBW306.0", "2"); - break; - case 4: - plcList.plc.WriteInt16("DB110.DBW318.0", "2"); - break; - case 5: - plcList.plc.WriteInt16("DB110.DBW330.0", "2"); - break; - case 6: - plcList.plc.WriteInt16("DB110.DBW342.0", "2"); - break; - case 7: - plcList.plc.WriteInt16("DB110.DBW354.0", "2"); - break; - case 8: - plcList.plc.WriteInt16("DB110.DBW366.0", "2"); - break; - case 9: - plcList.plc.WriteInt16("DB110.DBW 378.0", "2"); - break; - default: - break; - } - - #endregion - return true; + case 1: + s7.Write("DB110.DBW282.0",short.Parse("2")); + break; + case 2: + s7.Write("DB110.DBW294.0", short.Parse("2")); + break; + case 3: + s7.Write("DB110.DBW306.0", short.Parse("2")); + break; + case 4: + s7.Write("DB110.DBW318.0", short.Parse("2")); + break; + case 5: + s7.Write("DB110.DBW330.0", short.Parse("2")); + break; + case 6: + s7.Write("DB110.DBW342.0", short.Parse("2")); + break; + case 7: + s7.Write("DB110.DBW354.0", short.Parse("2")); + break; + case 8: + s7.Write("DB110.DBW366.0", short.Parse("2")); + break; + case 9: + s7.Write("DB110.DBW 378.0", short.Parse("2")); + break; + default: + break; } - else - { - return false; - } - + + #endregion + return true; } } - catch (System.Exception) + catch (System.Exception ex) { - + log.Error(ex.Message); return false; } @@ -380,55 +497,111 @@ namespace Admin.Core.Service var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(plan.Plan_Id); if (hwWeighList == null) return null; - var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC")); - if (plcList.plc.IsConnected) + + if (weighbridge == "1号地磅") { - if (weighbridge == "1号地磅") + var s7 = PlcConnect.Instance; + int planNum = s7.ReadInt16("DB110.DBW2.0").Content;//执行批次 + if (plan.Plan_Num > planNum) { - int planNum = plcList.plc.ReadInt16("DB110.DBW2.0");//执行批次 - if (plan.Plan_Num > planNum) - { - var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); - var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); - int materialNo = plcList.plc.ReadInt16("DB110.DBW1758");//当前执行物料 - if (materialNo == 0) materialNo = 1; - var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo); - if (hwWeigh == null) return null; + int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料 + if (materialNo == 0) materialNo = 1; + var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo); + if (hwWeigh == null) return null; - return hwWeigh; - } - else - { - return null; - } + return hwWeigh; } else { - int planNum = plcList.plc.ReadInt16("DB110.DBW2.0");//执行批次 - if (plan.Plan_Num > planNum) - { - var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); - var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); - execNum = rtPlan.Exec_Num; - int materialNo = plcList.plc.ReadInt16("DB110.DBW1758");//当前执行物料 - var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo); - if (hwWeigh == null) return null; - - return hwWeigh; - } - else - { - return null; - } + return null; } } else { - log.Error("PLC连接失败!"); + var s7 = PlcConnect.Instance; + int planNum = s7.ReadInt16("DB110.DBW2.0").Content;//执行批次 + if (plan.Plan_Num > planNum) + { + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); + execNum = rtPlan.Exec_Num; + int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料 + var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo); + if (hwWeigh == null) return null; + + return hwWeigh; + } + else + { + return null; + } } + + } + catch (System.Exception ex) + { + log.Info(ex.Message); return null; } + } + + #endregion + + #region 整包物料查询 + /// + /// 整包物料查询 + /// + /// 整包物料编码 + /// 地磅 + /// + public async Task GetByZbCode(string code, string weighbridge) + { + try + { + string str1 = string.Empty; + if (!code.Contains("kg")) + { + string[] str = code.Split("-"); + str1= str[0]; + } + else + { + str1= code; + } + + var list = await _planRepository.GetDownLoadPlan(str1, weighbridge); + if (list.Count == 0) return null; + var plan = list.FirstOrDefault(d=>d.Plan_State==3); + + if (weighbridge == "1号地磅") + { + var s7 = PlcConnect.Instance; + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); + + int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料 + if (materialNo == 0) materialNo = 1; + var planView = list.FirstOrDefault(d => d.MID == materialNo&& d.Plan_State == 3); + if (planView == null) return null; + + return planView; + } + else + { + var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3); + var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id); + var s7 = PlcConnect.Instance; + int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料 + if (materialNo == 0) materialNo = 1; + var planView = list.FirstOrDefault(d => d.MID == materialNo); + if (planView == null) return null; + + return planView; + } + } catch (System.Exception ex) { log.Info(ex.Message); @@ -501,7 +674,8 @@ namespace Admin.Core.Service list.Add(view); }); return list; - } + } #endregion + } } \ No newline at end of file diff --git a/Admin.Core.Service/Service_New/xl_materialServices.cs b/Admin.Core.Service/Service_New/xl_materialServices.cs index 5ea3582..39a0d27 100644 --- a/Admin.Core.Service/Service_New/xl_materialServices.cs +++ b/Admin.Core.Service/Service_New/xl_materialServices.cs @@ -24,13 +24,16 @@ namespace Admin.Core.Service private readonly Ixl_planRepository _planRepository;//小料计划 private readonly IHw_BarrelRepository _hw_BarrelRepository; private readonly ILR_planRepository _lrPlanRepository; + private readonly Ixl_weighRepository _xlWeighRepository; + private readonly IBinFeedingReportRepository _binFeedingReportRepository; bool flag = true; int i = 0; #region 构造函数 public xl_materialServices(IBaseRepository dal, Ixl_materialRepository xl_materialRepository, IPmt_BinRepository pmt_BinRepository,Ixl_planRepository planRepository, - IHw_BarrelRepository hw_BarrelRepository, ILR_planRepository lrPlanRepository) + IHw_BarrelRepository hw_BarrelRepository, ILR_planRepository lrPlanRepository, + Ixl_weighRepository xlWeighRepository, IBinFeedingReportRepository binFeedingReportRepository) { this._dal = dal; base.BaseDal = dal; @@ -39,7 +42,9 @@ namespace Admin.Core.Service _planRepository = planRepository; _hw_BarrelRepository = hw_BarrelRepository; _lrPlanRepository = lrPlanRepository; - } + _xlWeighRepository = xlWeighRepository; + _binFeedingReportRepository = binFeedingReportRepository; + } #endregion #region 小料投料执行类型防差错 @@ -50,14 +55,21 @@ namespace Admin.Core.Service /// 状态 /// 物料编码 /// 物料重量 + /// 物料二维码 /// - public async Task> ExecPlcState(int binSerial, int state, string materialCode, decimal weight) + public async Task> ExecPlcState(int binSerial, int state, string materialCode, decimal weight,string? barCode) { MessageModel mesage=new MessageModel(); log.Info(materialCode + "|" + weight); string station = string.Empty; try { + if (string.IsNullOrEmpty(barCode.Trim())) + { + mesage.success = false; + mesage.msg = "原材料二维码为空!请检查后重试"; + return mesage; + } station = GetStationPoint(binSerial, station); var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("小料PLC")); if (plcList.plc.IsConnected) @@ -72,27 +84,38 @@ namespace Admin.Core.Service var pmtBin = await _pmt_BinRepository.FirstAsync(d => d.Bin_Serial == binSerial); var material = await _xl_materialRepository.FirstAsync(d => d.ID == pmtBin.Material_ID); - Hw_BinTypeErrorPreventionReport hw = new Hw_BinTypeErrorPreventionReport() + if (!string.IsNullOrEmpty(barCode.Trim())) { - BinID = binSerial, - Bin_Name = pmtBin.Bin_Name, - Bin_Code = pmtBin.Bin_Code, - MaterialID = pmtBin.Material_ID, - MaterialName = material.Material_name, - Material_Code = material.Material_code, - CreateTime = DateTime.Now - }; - Hw_BinAlarm binAlarm = new Hw_BinAlarm(); - binAlarm.BinId = binSerial; - binAlarm.BinName = pmtBin.Bin_Name; - binAlarm.MaterialCode = pmtBin.Material_ID; - binAlarm.MaterialName = material.Material_name; - binAlarm.Weights = weight; - binAlarm.TypeName = "入库"; - binAlarm.CreateTime = DateTime.Now; - //同时记录该扫码到数据库中 - pmtBin.BinWeight = pmtBin.BinWeight + weight; - bool saveResult = await _pmt_BinRepository.AddData(binAlarm, hw, pmtBin); + string[] str = barCode.Split("-"); + + //保存料仓投料重量 + Hw_BinTypeErrorPreventionReport hw = new Hw_BinTypeErrorPreventionReport() + { + BinID = binSerial, + Bin_Name = pmtBin.Bin_Name, + Bin_Code = pmtBin.Bin_Code, + MaterialID = pmtBin.Material_ID, + MaterialName = material.Material_name, + Material_Code = material.Material_code, + Material_InventoryCode = str[0], + Material_BatchNumber = str[1], + Material_SerialCode = str[2], + BarCodeStr = barCode, + CreateTime = DateTime.Now + }; + Hw_BinAlarm binAlarm = new Hw_BinAlarm(); + binAlarm.BinId = binSerial; + binAlarm.BinName = pmtBin.Bin_Name; + binAlarm.MaterialCode = pmtBin.Material_ID; + binAlarm.MaterialName = material.Material_name; + binAlarm.Weights = weight; + binAlarm.TypeName = "入库"; + binAlarm.CreateTime = DateTime.Now; + //同时记录该扫码到数据库中 + pmtBin.BinWeight = pmtBin.BinWeight + weight; + bool saveResult = await _pmt_BinRepository.AddData(binAlarm, hw, pmtBin); + } + bool result = plcList.plc.WriteInt16(station, state.ToString());//写入开锁点位 if (result) { @@ -312,7 +335,7 @@ namespace Admin.Core.Service log.Info($"重量:{tcheckWeight}"); //绑定桶 var barrelList = await _hw_BarrelRepository.QueryAsync(); - + if (barrelList == null) return 1; Hw_Barrel barrel = barrelList.FirstOrDefault(d => d.BarCode == code.Trim()); @@ -321,26 +344,20 @@ namespace Admin.Core.Service if (barrel == null) return 2; //if (!string.IsNullOrEmpty(barrel.MaterialID)) return 3;//判断桶是否绑定 - barrel.MaterialID = exec.Recipe_Code;//配方条码 + barrel.MaterialID = exec.RecipeID;//配方主键 barrel.MaterialName = exec.Recipe_Name;//配方名称 barrel.PlanId = exec.Plan_Id; barrel.Weight = tcheckWeight; barrel.CreateDateTime = DateTime.Now; - + int tcheckBatch = GetTcheckBatch(plcList);//当前执行的车次 + log.Info("批次:" + tcheckBatch.ToString()); if (tcheckBatch > 0) { - //int plan_Serial = exec.Plan_Serial;//计划的批次 - - //decimal totalWeight = exec.Total_Weight;//当前批次设定总重量 - //decimal totalError = exec.Total_Error;//当前批次设定总误差 int batch = exec.Plan_Num - tcheckBatch;//剩余批次 - decimal error = exec.Total_Weight - Convert.ToDecimal(tcheckWeight);//实际误差 - decimal total_Weight = exec.Plan_TotalWeight + tcheckWeight;//重量累加 decimal total_Error = exec.Plan_TotalError + error;//误差累加 - decimal totalMaxError = exec.Total_Weight + exec.Total_Error;//最大值 decimal totalMinError = exec.Total_Weight - exec.Total_Error;//最小值 @@ -426,16 +443,19 @@ namespace Admin.Core.Service } else { + log.Error("检量称状态显示未完成"); return 110;//检量称状态显示未完成 } } else { + log.Error("PLC连接失败"); return 110;//PLC连接失败 } } else { + log.Error("执行批次未获取"); return 8;//执行批次未获取 } } @@ -590,10 +610,12 @@ namespace Admin.Core.Service public int GetTcheckBatch(PlcModel model) { int tb = 0; - //do - //{ - tb = model.plc.ReadInt16("DB110.DBW212"); - //} while (tb > 0); + int i = 0; + do + { + tb = model.plc.ReadInt16("DB110.DBW212"); + i++; + } while (i >3); log.Info("获取批次:" + tb); return tb; } @@ -607,5 +629,58 @@ namespace Admin.Core.Service return Task.CompletedTask; } #endregion + + #region 料框防错验证——只验证单料 + public async Task> MaterialVerification(string barCode) + { + MessageModel messageModel = new MessageModel(); + Hw_Barrel hw_Barrel = await _hw_BarrelRepository.FirstAsync(d => d.BarCode == barCode); + if (hw_Barrel == null) + { + messageModel.msg = "未查询到当前料桶信息!"; + messageModel.success = false; + return messageModel; + } + + xl_plan xl = await _planRepository.FirstAsync(d => d.Plan_State == 3); + if (xl == null) + { + messageModel.msg = "未查询到计划执行信息!"; + messageModel.success = false; + return messageModel; + } + List xlList = await _xlWeighRepository.QueryAsync(d => d.Recipe_ID == xl.Recipe_ID); + if (xlList.Count > 1) + { + messageModel.msg = "系统无法验证混合物料,只能验证称量单个物料!"; + messageModel.success = false; + return messageModel; + } + if (xlList.Count == 0) + { + messageModel.msg = "系统未查询到物料!"; + messageModel.success = false; + return messageModel; + } + xl_weigh Weigh = xlList.FirstOrDefault(d => d.Material_ID == hw_Barrel.Material_KeyID); + + if (Weigh != null) + { + var material = await _xl_materialRepository.FirstAsync(d => d.ID == Weigh.Material_ID); + messageModel.msg = $"物料验证成功!当前桶物料为[{hw_Barrel.Material_KeyName}],称量物料为[{material.Material_name}]"; + messageModel.success = true; + return messageModel; + } + else + { + xl_weigh xl_weigh = xlList.First(); + var material = await _xl_materialRepository.FirstAsync(d => d.ID == xl_weigh.Material_ID); + messageModel.msg = $"物料验证失败!当前桶物料为[{hw_Barrel.Material_KeyName}],称量物料为[{material.Material_name}]"; + messageModel.success = false; + return messageModel; + } + } + #endregion + } } \ No newline at end of file diff --git a/Admin.Core.Tasks/QuartzNet/Jobs/Job_Admin_Quartz.cs b/Admin.Core.Tasks/QuartzNet/Jobs/Job_Admin_Quartz.cs index 6528018..9994f26 100644 --- a/Admin.Core.Tasks/QuartzNet/Jobs/Job_Admin_Quartz.cs +++ b/Admin.Core.Tasks/QuartzNet/Jobs/Job_Admin_Quartz.cs @@ -4,7 +4,9 @@ using Admin.Core.IService.ISys; using Admin.Core.Model; using Admin.Core.PlcServer; using Admin.Core.Service; +using log4net; using Quartz; +using Serilog; using System; using System.Collections.Generic; using System.Linq; @@ -19,7 +21,7 @@ namespace Admin.Core.Tasks { private readonly IPmt_AlarmServices _pmtAlarmServices; private readonly ILR_AlarmlogServices _lrAlarmlogServices; - + private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Hw_WarehouseServices)); public Job_Admin_Quartz(ISysTasksQzService SysTasksQzService, ISysJobLogService sysJobLogService, IPmt_AlarmServices pmtAlarmServices, ILR_AlarmlogServices lrAlarmlogServices) { @@ -34,66 +36,15 @@ namespace Admin.Core.Tasks } public async Task Run(IJobExecutionContext context) - { - var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("小料PLC")); - if (plcList.plc.IsConnected) - { - List addAlarmList = new List(); - List updateAlarmList = new List(); - List list = await _pmtAlarmServices.QueryAsync(); - - foreach (var item in list) - { - if (plcList.plc.ReadBool(item.Alarm_Point)) - { - var alarm = await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID); - if (alarm==null) - { - LR_Alarmlog lR_Alarmlog = new LR_Alarmlog(); - - lR_Alarmlog.Equip_Code = "01"; - lR_Alarmlog.Alarm_ID = item.Alarm_ID; - lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); - lR_Alarmlog.Alarm_Status = 1; - lR_Alarmlog.Alarm_GUID = "01"; - - await _lrAlarmlogServices.AddAsync(lR_Alarmlog); - //addAlarmList.Add(lR_Alarmlog); - } - else - { - alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); - alarm.Alarm_Status = 1; - await _lrAlarmlogServices.UpdateAsync(alarm); - } - } - else - { - var alarm = await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID); - if (alarm == null) - { - LR_Alarmlog lR_Alarmlog = new LR_Alarmlog(); - - lR_Alarmlog.Equip_Code = "01"; - lR_Alarmlog.Alarm_ID = item.Alarm_ID; - lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); - lR_Alarmlog.Alarm_Status = 0; - lR_Alarmlog.Alarm_GUID = "01"; - - await _lrAlarmlogServices.UpdateAsync(lR_Alarmlog); - } - else - { - alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); - alarm.Alarm_Status = 0; + { + await RunAlarm(); + } - await _lrAlarmlogServices.UpdateAsync(alarm); - } - } - } - - - } + private async Task RunAlarm() + { + } + + } } diff --git a/Admin.Core.Wpf/App.xaml.cs b/Admin.Core.Wpf/App.xaml.cs index 8c30b2e..3b23c27 100644 --- a/Admin.Core.Wpf/App.xaml.cs +++ b/Admin.Core.Wpf/App.xaml.cs @@ -12,7 +12,6 @@ using Microsoft.AspNetCore.Hosting; using Admin.Core.IService.ISys; using Admin.Core.Tasks; using Microsoft.AspNetCore.Builder; -using Google.Protobuf.WellKnownTypes; namespace Admin.Core.Wpf { diff --git a/S71500/Impl/Adapter.cs b/S71500/Impl/Adapter.cs index 2c5b16a..57b83be 100644 --- a/S71500/Impl/Adapter.cs +++ b/S71500/Impl/Adapter.cs @@ -62,7 +62,7 @@ namespace S71500.Impl { s7 = new SiemensS7Net(SiemensPLCS.S1500); s7.ConnectTimeOut = 2000; - //s7.IpAddress = IP; + s7.IpAddress = IP; s7.Port = Port; OperateResult connect = s7.ConnectServer(); if (connect.IsSuccess)