重新修改

master
CaesarBao 2 months ago
parent bdb9735290
commit fde8fc56f7

@ -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<ISqlSugarClient>();
_logger = host.Services.GetRequiredService<SerilogHelper>();
plcList = host.Services.GetRequiredService<List<PlcAbsractFactory>>();
_datastationLocalService = host.Services.GetService<IDatastationLocalService>();
}
catch (Exception ex)
{
@ -204,21 +209,28 @@ namespace ConsoleApp
/// </summary>
/// <param name="ProductBarCode"></param>
/// <returns></returns>
private Datastation IsExistData(string ProductBarCode)
private DatastationLocal IsExistData(string ProductBarCode)
{
Datastation datastation = null;
DatastationLocal datastationLocal = null;
try
{
datastation = SqlSugarClient.Queryable<Datastation>().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<DatastationLocal>().First(it => it.Partsns == jsonString);
//datastation = SqlSugarClient.Queryable<Datastation>().First(it => it.Partsns == jsonString);
if (datastationLocal != null)
{
return datastation;
return datastationLocal;
}
return datastation;
return datastationLocal;
}
catch (Exception ex)
{
return datastation;
return datastationLocal;
}
}
/// <summary>
@ -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<Glbcaldata>().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<Datastation>().First(it => it.Partsns.Contains(barcode));
//var datastationid = SqlSugarClient.Queryable<Datastation>().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<Dataproduce>().First(it => it.Mainsn == QGBarCode);
if (Dipsn != null)
{
Dipsn.Snlist = QGBarCode+","+ZZBarCode;
Dipsn.Operseq = Dipsn.Operseq+","+StationCode;
var ZZBarcide = SqlSugarClient.Queryable<Dataproduce>().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<Datastation>().First(it => it.Partsns.Contains(ZZBarCode));
/* var zzdata = SqlSugarClient.Queryable<Datastation>().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);

@ -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) =>

@ -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": [

@ -7,7 +7,7 @@ namespace SlnMesnac.Model.domain
/// <summary>
/// 产品生产工位全过程数据(对于同一工位下同一产品码,可能有多条不同记录),表结构完全同datastationcur
///</summary>
[SugarTable("datastation")]
[SugarTable("datastation"), TenantAttribute("mes")]
public class Datastation
{

@ -0,0 +1,151 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace SlnMesnac.Model.domain
{
/// <summary>
/// 产品生产工位全过程数据(对于同一工位下同一产品码,可能有多条不同记录),表结构完全同datastationcur
///</summary>
[SugarTable("datastation"), TenantAttribute("local")]
public class DatastationLocal
{
/// <summary>
/// 备 注:
/// 默认值:
///</summary>
[SugarColumn(ColumnName="id" ,IsPrimaryKey = true,IsIdentity = true) ]
public int Id { get; set; }
/// <summary>
/// 备 注:工位码
/// 默认值:
///</summary>
[SugarColumn(ColumnName="stationid" ) ]
public string? Stationid { get; set; }
/// <summary>
/// 备 注:产品码
/// 默认值:
///</summary>
[SugarColumn(ColumnName="productid" ) ]
public string? Productid { get; set; }
/// <summary>
/// 备 注:部件码
/// 默认值:
///</summary>
[SugarColumn(ColumnName="partid" ) ]
public string? Partid { get; set; }
/// <summary>
/// 备 注:机种码
/// 默认值:
///</summary>
[SugarColumn(ColumnName="modelid" ) ]
public string? Modelid { get; set; }
/// <summary>
/// 备 注:记录时间
/// 默认值:
///</summary>
[SugarColumn(ColumnName="stime" ) ]
public DateTime Stime { get; set; }
/// <summary>
/// 备 注:是否NG0 非NG1 NG品
/// 默认值:
///</summary>
[SugarColumn(ColumnName="ng" ) ]
public int Ng { get; set; }
/// <summary>
/// 备 注:过程描述 0 正常1 NG品未加工2 - NG品排出
/// 默认值:
///</summary>
[SugarColumn(ColumnName="proc" ) ]
public int Proc { get; set; }
/// <summary>
/// 备 注:支线数
/// 默认值:
///</summary>
[SugarColumn(ColumnName="sublinenum" ) ]
public int? Sublinenum { get; set; }
/// <summary>
/// 备 注:支线条码数
/// 默认值:
///</summary>
[SugarColumn(ColumnName="sublinesnnum" ) ]
public int? Sublinesnnum { get; set; }
/// <summary>
/// 备 注:部件条码数
/// 默认值:
///</summary>
[SugarColumn(ColumnName="partsnnum" ) ]
public int? Partsnnum { get; set; }
/// <summary>
/// 备 注:操作员ID
/// 默认值:
///</summary>
[SugarColumn(ColumnName="operid" ) ]
public string? Operid { get; set; }
/// <summary>
/// 备 注:支线id,json格式:{ids:[1,2,3]}
/// 默认值:
///</summary>
[SugarColumn(ColumnName="sublineids" ) ]
public string? Sublineids { get; set; }
/// <summary>
/// 备 注:部件条码json格式{'sn':['10001','10002','20008']}
/// 默认值:
///</summary>
[SugarColumn(ColumnName="partsns" ) ]
public string? Partsns { get; set; }
/// <summary>
/// 备 注:支线条码json格式{'sn':['10001','10002','20008']}
/// 默认值:
///</summary>
[SugarColumn(ColumnName="sublinesns" ) ]
public string? Sublinesns { get; set; }
/// <summary>
/// 备 注:参数数据,json格式。 {"d":[{"v":1.2,"max":2.0,"min":1.0,"ng":1},{}]}
/// 默认值:
///</summary>
[SugarColumn(ColumnName="paratemp" ) ]
public string? Paratemp { get; set; }
/// <summary>
/// 备 注:字符串参数。json:{"str":["1111","2222"]}
/// 默认值:
///</summary>
[SugarColumn(ColumnName="stringtemp" ) ]
public string? Stringtemp { get; set; }
/// <summary>
/// 备 注:工位组,同一线路,相同工序号的工位放在一个工位组里,以 ","号分隔
/// 默认值:
///</summary>
[SugarColumn(ColumnName="groupStationId" ) ]
public string? GroupStationId { get; set; }
/// <summary>
/// 备 注:
/// 默认值:
///</summary>
[SugarColumn(ColumnName="renum" ) ]
public string? Renum { get; set; }
}
}

@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace Models
{
/// <summary>
/// 辅助计算全局数据记录表
///</summary>
[SugarTable("glbcaldata")]
public class Glbcaldata
{
/// <summary>
/// 备 注:主键
/// 默认值:
///</summary>
[SugarColumn(ColumnName="id" ,IsPrimaryKey = true,IsIdentity = true) ]
public int Id { get; set; }
/// <summary>
/// 备 注:产品码编号
/// 默认值:
///</summary>
[SugarColumn(ColumnName="lastProduceId" ) ]
public int LastProduceId { get; set; }
/// <summary>
/// 备 注:产品码起始条码头
/// 默认值:
///</summary>
[SugarColumn(ColumnName="ProducePreSn" ) ]
public string? ProducePreSn { get; set; }
/// <summary>
/// 备 注:当前生产的机种ID
/// 默认值:
///</summary>
[SugarColumn(ColumnName="curmodelId" ) ]
public int? CurmodelId { get; set; }
/// <summary>
/// 备 注:线路id即对应cfglineattr的主键
/// 默认值:
///</summary>
[SugarColumn(ColumnName="lineid" ) ]
public int? Lineid { get; set; }
/// <summary>
/// 备 注:暂不用0 - 未启动1 - 正常; 2 - 预停止)
/// 默认值:
///</summary>
[SugarColumn(ColumnName="curmodelstatus" ) ]
public int? Curmodelstatus { get; set; }
/// <summary>
/// 备 注:暂不用当前机种切换表cfgproductswitch中的id
/// 默认值:
///</summary>
[SugarColumn(ColumnName="curswitchid" ) ]
public int? Curswitchid { get; set; }
/// <summary>
/// 备 注:负责人姓名界面手工填写plc可不填
/// 默认值:
///</summary>
[SugarColumn(ColumnName="chargername" ) ]
public string? Chargername { get; set; }
/// <summary>
/// 备 注:启动时间
/// 默认值:
///</summary>
[SugarColumn(ColumnName="starttime" ) ]
public DateTime? Starttime { get; set; }
/// <summary>
/// 备 注:结束时间
/// 默认值:
///</summary>
[SugarColumn(ColumnName="stoptime" ) ]
public DateTime? Stoptime { get; set; }
/// <summary>
/// 备 注:状态 0-未启动 1-进行中 2-结束
/// 默认值:
///</summary>
[SugarColumn(ColumnName="status" ) ]
public int Status { get; set; }
/// <summary>
/// 备 注:操作人员-账户,即上位机登录账户
/// 默认值:
///</summary>
[SugarColumn(ColumnName="opername" ) ]
public string? Opername { get; set; }
/// <summary>
/// 备 注:包含该机种所含工位代码集合,用','分割,例如'OP10,OP20'
/// 默认值:
///</summary>
[SugarColumn(ColumnName="includestation" ) ]
public string? Includestation { get; set; }
}
}

@ -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>
{
DatastationLocal GetDatastationLocal(string barcode);
Task<bool> UpdateDatastationLocalAsync(DatastationLocal record);
Task<bool> AddDatastationLocalAsync(DatastationLocal record);
}
}

@ -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<DatastationLocal>, IDatastationLocalService
{
private Repository<DatastationLocal> _repository;
public DatastationLocalServiceImpl(Repository<DatastationLocal> 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<bool> AddDatastationLocalAsync(DatastationLocal record)
{
bool result = await _rep.InsertAsync(record);
return result;
}
public async Task<bool> UpdateDatastationLocalAsync(DatastationLocal record)
{
bool result = await _rep.UpdateAsync(record);
return result;
}
}
}
Loading…
Cancel
Save