From fde8fc56f7350af43bc997d599343823d22187bf Mon Sep 17 00:00:00 2001 From: CaesarBao Date: Tue, 28 Oct 2025 14:51:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ConsoleApp/MainCentralControl.cs | 108 ++++++++++--- ConsoleApp/Program.cs | 2 +- ConsoleApp/appsettings.json | 5 + SlnMesnac.Model/domain/Datastation.cs | 2 +- SlnMesnac.Model/domain/DatastationLocal.cs | 151 ++++++++++++++++++ SlnMesnac.Model/domain/Glbcaldata.cs | 109 +++++++++++++ .../service/IDatastationLocalService.cs | 18 +++ .../Impl/DatastationLocalServiceImpl.cs | 45 ++++++ 8 files changed, 415 insertions(+), 25 deletions(-) create mode 100644 SlnMesnac.Model/domain/DatastationLocal.cs create mode 100644 SlnMesnac.Model/domain/Glbcaldata.cs create mode 100644 SlnMesnac.Repository/service/IDatastationLocalService.cs create mode 100644 SlnMesnac.Repository/service/Impl/DatastationLocalServiceImpl.cs diff --git a/ConsoleApp/MainCentralControl.cs b/ConsoleApp/MainCentralControl.cs index 88c3b6c..927c9d7 100644 --- a/ConsoleApp/MainCentralControl.cs +++ b/ConsoleApp/MainCentralControl.cs @@ -1,5 +1,6 @@ using HslCommunication.Core; using Mesnac.Compressor.Entity; +using Microsoft.Data.SqlClient; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Models; @@ -9,6 +10,7 @@ using SlnMesnac.Config; using SlnMesnac.Model.domain; using SlnMesnac.Plc; using SlnMesnac.Repository; +using SlnMesnac.Repository.service; using SlnMesnac.Serilog; using SqlSugar; using System.Collections; @@ -49,6 +51,8 @@ namespace ConsoleApp //PLC支线码2地址 private string _semiBarcode2; + private IDatastationLocalService _datastationLocalService; + public MainCentralControl(IHost host) { try @@ -59,6 +63,7 @@ namespace ConsoleApp SqlSugarClient = host.Services.GetRequiredService(); _logger = host.Services.GetRequiredService(); plcList = host.Services.GetRequiredService>(); + _datastationLocalService = host.Services.GetService(); } catch (Exception ex) { @@ -204,21 +209,28 @@ namespace ConsoleApp /// /// /// - private Datastation IsExistData(string ProductBarCode) + private DatastationLocal IsExistData(string ProductBarCode) { - Datastation datastation = null; + DatastationLocal datastationLocal = null; try { - datastation = SqlSugarClient.Queryable().First(it => it.Partsns.Contains(ProductBarCode)); - if (datastation != null) + partsns partsns = new partsns(); + partsns.sn.Add(ProductBarCode); + string jsonString = StringChange.ModeToJson(partsns); + + //查询本地库是否存在该数据 + datastationLocal = _datastationLocalService.GetDatastationLocal("jsonString"); + //datastationLocal = SqlSugarClient.Queryable().First(it => it.Partsns == jsonString); + //datastation = SqlSugarClient.Queryable().First(it => it.Partsns == jsonString); + if (datastationLocal != null) { - return datastation; + return datastationLocal; } - return datastation; + return datastationLocal; } catch (Exception ex) { - return datastation; + return datastationLocal; } } /// @@ -231,6 +243,26 @@ namespace ConsoleApp { //转子码 byte[] SemBarCode = Plc.readValueByAddress(_semiBarcode1, 20); string barcode = ByteTransform.TransString(SemBarCode, 0, 20, Encoding.ASCII); + Glbcaldata no = SqlSugarClient.Queryable().First(it => it.Id == 18); + Dataproduce dataproduce = null; + if (no != null) + { + dataproduce = new Dataproduce() + { + Productid = no.ProducePreSn + no.LastProduceId, + Stime = DateTime.Now, + Etime = DateTime.Now, + Currreinstation = StationCode, + Operseq = StationCode, + Snlist = barcode, + Mainsn = barcode, + Pdtype = 2, + Status = 2, + }; + int id = SqlSugarClient.Insertable(dataproduce).ExecuteReturnIdentity(); + no.LastProduceId = no.LastProduceId + 1; + SqlSugarClient.Updateable(no).ExecuteCommand(); + } partsns partsns = new partsns(); partsns.sn.Add(barcode); //数据 @@ -289,7 +321,7 @@ namespace ConsoleApp root.d.Add(data5); string datastring = StringChange.ModeToJson(root); //查询是否已经存在数据,存在则更新不存在则保存 - Datastation datastation = IsExistData(barcode); + Datastation datastation = null; if (datastation != null) { //更新 @@ -305,11 +337,12 @@ namespace ConsoleApp else { SqlSugarClient.AsTenant().BeginTran(); + //存库 datastation = new Datastation() { Stime = DateTime.Now, Stationid = StationCode, - Productid = "", + Productid = dataproduce.Productid, Partid = "", Modelid = "", Ng = Plc.readInt16ByAddress("D7725").ToString() == "1" ? 0 : 1, @@ -325,17 +358,40 @@ namespace ConsoleApp GroupStationId = "", Renum = "0", }; - //存盘 + DatastationLocal datastationLocal = new DatastationLocal() + { + Stime = DateTime.Now, + Stationid = StationCode, + Productid = dataproduce.Productid, + Partid = "", + Modelid = "", + Ng = Plc.readInt16ByAddress("D7725").ToString() == "1" ? 0 : 1, + Proc = 0, + Sublinenum = 0, + Sublinesnnum = 0, + Partsnnum = 1, + Sublineids = "", + Partsns = jsonString, + Sublinesns = StringChange.ModeToJson(new partsns()), + Paratemp = datastring, + Stringtemp = "", + GroupStationId = "", + Renum = "0", + }; + //存盘先报存到本地数据库 + bool insertflag = await _datastationLocalService.AddDatastationLocalAsync(datastationLocal); + int id = SqlSugarClient.Insertable(datastation).ExecuteReturnIdentity(); + Plc.writeInt16ByAddress("D7704", 1); - //Console.WriteLine(StringChange.ModeToJson(datastation)); _logger.Info(StringChange.ModeToJson(datastation)); - var datastationid = SqlSugarClient.Queryable().First(it => it.Partsns.Contains(barcode)); + + //var datastationid = SqlSugarClient.Queryable().First(it => it.Partsns.Contains(barcode)); //datastationparam数据存表 Datastationparam datastationparam1 = new Datastationparam() { - Dsid = datastationid.Id, + Dsid = id, Productid = StationCode, Stationid = StationCode, N = data1.n, @@ -349,7 +405,7 @@ namespace ConsoleApp }; Datastationparam datastationparam2 = new Datastationparam() { - Dsid = datastationid.Id, + Dsid = id, Productid = StationCode, Stationid = StationCode, N = data2.n, @@ -363,7 +419,7 @@ namespace ConsoleApp }; Datastationparam datastationparam3 = new Datastationparam() { - Dsid = datastationid.Id, + Dsid = id, Productid = StationCode, Stationid = StationCode, N = data3.n, @@ -377,7 +433,7 @@ namespace ConsoleApp }; Datastationparam datastationparam4 = new Datastationparam() { - Dsid = datastationid.Id, + Dsid = id, Productid = StationCode, Stationid = StationCode, N = data4.n, @@ -391,7 +447,7 @@ namespace ConsoleApp }; Datastationparam datastationparam5 = new Datastationparam() { - Dsid = datastationid.Id, + Dsid = id, Productid = StationCode, Stationid = StationCode, N = data5.n, @@ -429,7 +485,7 @@ namespace ConsoleApp byte[] SemBarCode = Plc.readValueByAddress(_semiBarcode1, 20); string ZZBarCode = ByteTransform.TransString(SemBarCode, 0, 20, Encoding.ASCII); _logger.Info("转子码:" + ZZBarCode); - Datastation datastation = IsExistData(ZZBarCode); + DatastationLocal datastation = IsExistData(ZZBarCode); if (datastation != null) { if (datastation.Ng != 0) @@ -448,11 +504,17 @@ namespace ConsoleApp #region 根据前盖码查询Productid //根据前盖码查询Productid var Dipsn = SqlSugarClient.Queryable().First(it => it.Mainsn == QGBarCode); + if (Dipsn != null) { - Dipsn.Snlist = QGBarCode+","+ZZBarCode; - Dipsn.Operseq = Dipsn.Operseq+","+StationCode; - int updateflag = SqlSugarClient.Updateable(Dipsn).ExecuteCommand(); + var ZZBarcide = SqlSugarClient.Queryable().First(it => it.Mainsn == ZZBarCode); + if (ZZBarcide != null) + { + ZZBarcide.Sysid = Dipsn.Productid; + //ZZBarcide.Snlist = QGBarCode + "," + ZZBarCode; + //ZZBarcide.Operseq = Dipsn.Operseq + "," + StationCode; + int updateflag = SqlSugarClient.Updateable(Dipsn).ExecuteCommand(); + } //Dipsn dipsn = new Dipsn() //{ @@ -465,7 +527,7 @@ namespace ConsoleApp } #endregion #region 查询datastation表,更新Productid - var zzdata = SqlSugarClient.Queryable().First(it => it.Partsns.Contains(ZZBarCode)); + /* var zzdata = SqlSugarClient.Queryable().First(it => it.Partsns.Contains(ZZBarCode)); if (zzdata != null) { zzdata.Productid = Dipsn.Productid; @@ -480,7 +542,7 @@ namespace ConsoleApp int updateflag = SqlSugarClient.Ado.ExecuteCommand(sql); }); } - } + }*/ #endregion //下发PLC上工位合格 Plc.writeInt16ByAddress(_completeAskAddress, 1); diff --git a/ConsoleApp/Program.cs b/ConsoleApp/Program.cs index 989091e..e61e4d1 100644 --- a/ConsoleApp/Program.cs +++ b/ConsoleApp/Program.cs @@ -276,7 +276,7 @@ namespace ConsoleApp { Console.WriteLine(int.Parse(instanceId)); - serverOptions.ListenAnyIP(5000 + (int.Parse(instanceId) - 1) * 10); + serverOptions.ListenAnyIP(1 + (int.Parse(instanceId) - 1)); }); }) .ConfigureServices((context, services) => diff --git a/ConsoleApp/appsettings.json b/ConsoleApp/appsettings.json index 4d71a21..c023707 100644 --- a/ConsoleApp/appsettings.json +++ b/ConsoleApp/appsettings.json @@ -14,6 +14,11 @@ "configId": "mes", "dbType": 0, "connStr": "Data Source=192.168.0.251;Port=3306;Initial Catalog=db_iems_sed;uid=root;pwd=123456;Charset=utf8mb4;SslMode=none;Connect Timeout=100" + }, + { + "configId": "local", + "dbType": 0, + "connStr": "Data Source=192.168.0.251;Port=3306;Initial Catalog=backup;uid=root;pwd=123456;Charset=utf8mb4;SslMode=none;Connect Timeout=100" } ], "PlcConfig": [ diff --git a/SlnMesnac.Model/domain/Datastation.cs b/SlnMesnac.Model/domain/Datastation.cs index 8a6ab36..201b8b0 100644 --- a/SlnMesnac.Model/domain/Datastation.cs +++ b/SlnMesnac.Model/domain/Datastation.cs @@ -7,7 +7,7 @@ namespace SlnMesnac.Model.domain /// /// 产品生产工位全过程数据(对于同一工位下同一产品码,可能有多条不同记录),表结构完全同datastationcur /// - [SugarTable("datastation")] + [SugarTable("datastation"), TenantAttribute("mes")] public class Datastation { diff --git a/SlnMesnac.Model/domain/DatastationLocal.cs b/SlnMesnac.Model/domain/DatastationLocal.cs new file mode 100644 index 0000000..681fc4a --- /dev/null +++ b/SlnMesnac.Model/domain/DatastationLocal.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using SqlSugar; +namespace SlnMesnac.Model.domain +{ + /// + /// 产品生产工位全过程数据(对于同一工位下同一产品码,可能有多条不同记录),表结构完全同datastationcur + /// + [SugarTable("datastation"), TenantAttribute("local")] + public class DatastationLocal + { + + + /// + /// 备 注: + /// 默认值: + /// + [SugarColumn(ColumnName="id" ,IsPrimaryKey = true,IsIdentity = true) ] + public int Id { get; set; } + + /// + /// 备 注:工位码 + /// 默认值: + /// + [SugarColumn(ColumnName="stationid" ) ] + public string? Stationid { get; set; } + + /// + /// 备 注:产品码 + /// 默认值: + /// + [SugarColumn(ColumnName="productid" ) ] + public string? Productid { get; set; } + + /// + /// 备 注:部件码 + /// 默认值: + /// + [SugarColumn(ColumnName="partid" ) ] + public string? Partid { get; set; } + + /// + /// 备 注:机种码 + /// 默认值: + /// + [SugarColumn(ColumnName="modelid" ) ] + public string? Modelid { get; set; } + + /// + /// 备 注:记录时间 + /// 默认值: + /// + [SugarColumn(ColumnName="stime" ) ] + public DateTime Stime { get; set; } + + /// + /// 备 注:是否NG:0 非NG;1 NG品 + /// 默认值: + /// + [SugarColumn(ColumnName="ng" ) ] + public int Ng { get; set; } + + /// + /// 备 注:过程描述 0 正常;1 NG品未加工;2 - NG品排出 + /// 默认值: + /// + [SugarColumn(ColumnName="proc" ) ] + public int Proc { get; set; } + + /// + /// 备 注:支线数 + /// 默认值: + /// + [SugarColumn(ColumnName="sublinenum" ) ] + public int? Sublinenum { get; set; } + + /// + /// 备 注:支线条码数 + /// 默认值: + /// + [SugarColumn(ColumnName="sublinesnnum" ) ] + public int? Sublinesnnum { get; set; } + + /// + /// 备 注:部件条码数 + /// 默认值: + /// + [SugarColumn(ColumnName="partsnnum" ) ] + public int? Partsnnum { get; set; } + + /// + /// 备 注:操作员ID + /// 默认值: + /// + [SugarColumn(ColumnName="operid" ) ] + public string? Operid { get; set; } + + /// + /// 备 注:支线id,json格式:{ids:[1,2,3]} + /// 默认值: + /// + [SugarColumn(ColumnName="sublineids" ) ] + public string? Sublineids { get; set; } + + /// + /// 备 注:部件条码,json格式:{'sn':['10001','10002','20008']} + /// 默认值: + /// + [SugarColumn(ColumnName="partsns" ) ] + public string? Partsns { get; set; } + + /// + /// 备 注:支线条码,json格式:{'sn':['10001','10002','20008']} + /// 默认值: + /// + [SugarColumn(ColumnName="sublinesns" ) ] + public string? Sublinesns { get; set; } + + /// + /// 备 注:参数数据,json格式。 {"d":[{"v":1.2,"max":2.0,"min":1.0,"ng":1},{}]} + /// 默认值: + /// + [SugarColumn(ColumnName="paratemp" ) ] + public string? Paratemp { get; set; } + + /// + /// 备 注:字符串参数。json:{"str":["1111","2222"]} + /// 默认值: + /// + [SugarColumn(ColumnName="stringtemp" ) ] + public string? Stringtemp { get; set; } + + /// + /// 备 注:工位组,同一线路,相同工序号的工位放在一个工位组里,以 ","号分隔 + /// 默认值: + /// + [SugarColumn(ColumnName="groupStationId" ) ] + public string? GroupStationId { get; set; } + + /// + /// 备 注: + /// 默认值: + /// + [SugarColumn(ColumnName="renum" ) ] + public string? Renum { get; set; } + + + } + +} \ No newline at end of file diff --git a/SlnMesnac.Model/domain/Glbcaldata.cs b/SlnMesnac.Model/domain/Glbcaldata.cs new file mode 100644 index 0000000..7efa909 --- /dev/null +++ b/SlnMesnac.Model/domain/Glbcaldata.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using SqlSugar; +namespace Models +{ + /// + /// 辅助计算全局数据记录表 + /// + [SugarTable("glbcaldata")] + public class Glbcaldata + { + + + /// + /// 备 注:主键 + /// 默认值: + /// + [SugarColumn(ColumnName="id" ,IsPrimaryKey = true,IsIdentity = true) ] + public int Id { get; set; } + + /// + /// 备 注:产品码编号 + /// 默认值: + /// + [SugarColumn(ColumnName="lastProduceId" ) ] + public int LastProduceId { get; set; } + + /// + /// 备 注:产品码起始条码头 + /// 默认值: + /// + [SugarColumn(ColumnName="ProducePreSn" ) ] + public string? ProducePreSn { get; set; } + + /// + /// 备 注:当前生产的机种ID + /// 默认值: + /// + [SugarColumn(ColumnName="curmodelId" ) ] + public int? CurmodelId { get; set; } + + /// + /// 备 注:线路id,即对应cfglineattr的主键 + /// 默认值: + /// + [SugarColumn(ColumnName="lineid" ) ] + public int? Lineid { get; set; } + + /// + /// 备 注:暂不用(0 - 未启动;1 - 正常; 2 - 预停止) + /// 默认值: + /// + [SugarColumn(ColumnName="curmodelstatus" ) ] + public int? Curmodelstatus { get; set; } + + /// + /// 备 注:暂不用(当前机种切换表cfgproductswitch中的id) + /// 默认值: + /// + [SugarColumn(ColumnName="curswitchid" ) ] + public int? Curswitchid { get; set; } + + /// + /// 备 注:负责人姓名,界面手工填写,plc可不填 + /// 默认值: + /// + [SugarColumn(ColumnName="chargername" ) ] + public string? Chargername { get; set; } + + /// + /// 备 注:启动时间 + /// 默认值: + /// + [SugarColumn(ColumnName="starttime" ) ] + public DateTime? Starttime { get; set; } + + /// + /// 备 注:结束时间 + /// 默认值: + /// + [SugarColumn(ColumnName="stoptime" ) ] + public DateTime? Stoptime { get; set; } + + /// + /// 备 注:状态 0-未启动 1-进行中 2-结束 + /// 默认值: + /// + [SugarColumn(ColumnName="status" ) ] + public int Status { get; set; } + + /// + /// 备 注:操作人员-账户,即上位机登录账户 + /// 默认值: + /// + [SugarColumn(ColumnName="opername" ) ] + public string? Opername { get; set; } + + /// + /// 备 注:包含该机种所含工位代码集合,用','分割,例如'OP10,OP20' + /// 默认值: + /// + [SugarColumn(ColumnName="includestation" ) ] + public string? Includestation { get; set; } + + + } + +} \ No newline at end of file diff --git a/SlnMesnac.Repository/service/IDatastationLocalService.cs b/SlnMesnac.Repository/service/IDatastationLocalService.cs new file mode 100644 index 0000000..22f21ac --- /dev/null +++ b/SlnMesnac.Repository/service/IDatastationLocalService.cs @@ -0,0 +1,18 @@ +using SlnMesnac.Model.domain; +using SlnMesnac.Repository.service.@base; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace SlnMesnac.Repository.service +{ + public interface IDatastationLocalService : IBaseService + { + DatastationLocal GetDatastationLocal(string barcode); + + Task UpdateDatastationLocalAsync(DatastationLocal record); + + Task AddDatastationLocalAsync(DatastationLocal record); + } +} diff --git a/SlnMesnac.Repository/service/Impl/DatastationLocalServiceImpl.cs b/SlnMesnac.Repository/service/Impl/DatastationLocalServiceImpl.cs new file mode 100644 index 0000000..369771f --- /dev/null +++ b/SlnMesnac.Repository/service/Impl/DatastationLocalServiceImpl.cs @@ -0,0 +1,45 @@ +using Models; +using SlnMesnac.Model.domain; +using SlnMesnac.Repository.service.@base; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace SlnMesnac.Repository.service.Impl +{ + + public class DatastationLocalServiceImpl : BaseServiceImpl, IDatastationLocalService + { + private Repository _repository; + public DatastationLocalServiceImpl(Repository rep) : base(rep) + { + _repository = rep; + } + public DatastationLocal GetDatastationLocal(string barcode) + { + DatastationLocal materialInfo = null; + try + { + materialInfo = base._rep.GetFirst(x => x.Partsns == barcode); + } + catch (Exception ex) + { + //_logger.LogError($"根据SAP物料编号获取物料信息异常:{ex.Message}"); + } + return materialInfo; + } + + public async Task AddDatastationLocalAsync(DatastationLocal record) + { + bool result = await _rep.InsertAsync(record); + return result; + } + + public async Task UpdateDatastationLocalAsync(DatastationLocal record) + { + bool result = await _rep.UpdateAsync(record); + return result; + } + } +}