|
|
|
@ -1,4 +1,5 @@
|
|
|
|
using AngleSharp.Common;
|
|
|
|
using AngleSharp.Common;
|
|
|
|
|
|
|
|
using Khd.Core.Domain.Dto;
|
|
|
|
using Khd.Core.Domain.Dto.waring;
|
|
|
|
using Khd.Core.Domain.Dto.waring;
|
|
|
|
using Khd.Core.Domain.Dto.webapi;
|
|
|
|
using Khd.Core.Domain.Dto.webapi;
|
|
|
|
using Khd.Core.Domain.Models;
|
|
|
|
using Khd.Core.Domain.Models;
|
|
|
|
@ -92,19 +93,19 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
using var scope = host.Services.CreateScope();
|
|
|
|
using var scope = host.Services.CreateScope();
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
List<BasePlc> basePlcs = dbContext.BasePlc.Where(t => t.Station.Contains("库位")).ToList();
|
|
|
|
List<BasePlc> basePlcs = dbContext.BasePlc.Where(t => t.Station.Contains("库位")).ToList();
|
|
|
|
var list = basePlcs.Select(t => new
|
|
|
|
StaticData.LocationToPlcList = basePlcs.Select(t => new
|
|
|
|
{
|
|
|
|
{
|
|
|
|
t.Id,
|
|
|
|
t.Id,
|
|
|
|
Station = t.Station.Replace("库位", ""),
|
|
|
|
Station = t.Station.Replace("库位", ""),
|
|
|
|
t.Address,
|
|
|
|
t.Address,
|
|
|
|
locRow = t.Name.Substring(t.Name.IndexOf('[') + 1, 1),
|
|
|
|
locRow = t.Name.Substring(t.Name.IndexOf('[') + 1, 1),
|
|
|
|
locColumn = t.Name.Substring(t.Name.IndexOf(',') + 1).Replace("]", "").Replace("五楼半成品[", ""),
|
|
|
|
locColumn = t.Name.Substring(t.Name.IndexOf(',') + 1).Replace("]", "").Replace("五楼半成品[", ""),
|
|
|
|
}).Select(t => new
|
|
|
|
}).Select(t => new LocationPlcDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
t.Id,
|
|
|
|
Id= t.Id,
|
|
|
|
t.Station,
|
|
|
|
Station= t.Station,
|
|
|
|
t.Address,
|
|
|
|
Address= t.Address,
|
|
|
|
t.locRow,
|
|
|
|
locRow= t.locRow,
|
|
|
|
locColumn = t.locColumn.Substring(0, t.locColumn.IndexOf(',') == -1 ? t.locColumn.Length : t.locColumn.IndexOf(',')),
|
|
|
|
locColumn = t.locColumn.Substring(0, t.locColumn.IndexOf(',') == -1 ? t.locColumn.Length : t.locColumn.IndexOf(',')),
|
|
|
|
layerNum = t.locColumn.IndexOf(',') == -1 ? "1" : t.locColumn.Substring(t.locColumn.IndexOf(',') == -1 ? 0 : t.locColumn.IndexOf(',') + 1)
|
|
|
|
layerNum = t.locColumn.IndexOf(',') == -1 ? "1" : t.locColumn.Substring(t.locColumn.IndexOf(',') == -1 ? 0 : t.locColumn.IndexOf(',') + 1)
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -114,7 +115,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var locations = dbContext.WmsBaseLocation.OrderBy(t => t.locRow).OrderBy(t => t.locColumn).ToList();
|
|
|
|
var locations = dbContext.WmsBaseLocation.OrderBy(t => t.locRow).OrderBy(t => t.locColumn).ToList();
|
|
|
|
foreach (var item in list)
|
|
|
|
foreach (var item in StaticData.LocationToPlcList)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsBaseLocation? wmsBaseLocation = locations.Where(t => t.locRow.ToString() == item.locRow)
|
|
|
|
WmsBaseLocation? wmsBaseLocation = locations.Where(t => t.locRow.ToString() == item.locRow)
|
|
|
|
.Where(t => t.locColumn.ToString() == item.locColumn)
|
|
|
|
.Where(t => t.locColumn.ToString() == item.locColumn)
|
|
|
|
@ -369,7 +370,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (errorCount > 20)
|
|
|
|
if (errorCount > 3)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger.Error($"Plc220短线重连失败超过{errorCount}次");
|
|
|
|
_logger.Error($"Plc220短线重连失败超过{errorCount}次");
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
@ -396,25 +397,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
//}
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress);
|
|
|
|
StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress);
|
|
|
|
if (errorCount > 0 && isOver)
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
{
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.设备Plc通讯异常);
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.设备Plc通讯异常);
|
|
|
|
|
|
|
|
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault();
|
|
|
|
|
|
|
|
//if (dmsRecordAlarmTime != null)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// AlarmEndTime = DateTime.Now,
|
|
|
|
|
|
|
|
// AlarmStatus = "1",
|
|
|
|
|
|
|
|
// UpdateBy = "WCS",
|
|
|
|
|
|
|
|
// UpdateTime = DateTime.Now
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// dbContext.SaveChanges();
|
|
|
|
|
|
|
|
// errorCount = 0;
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -450,7 +435,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (errorCount > 20)
|
|
|
|
if (errorCount > 3)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger.Error($"Plc30短线重连失败超过{errorCount}次");
|
|
|
|
_logger.Error($"Plc30短线重连失败超过{errorCount}次");
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
@ -479,25 +464,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
|
|
|
|
if (errorCount > 0 && isOver)
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
{
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.提升机Plc通讯异常);
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.提升机Plc通讯异常);
|
|
|
|
|
|
|
|
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
|
|
|
|
|
|
|
|
//if (dmsRecordAlarmTime != null)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// AlarmEndTime = DateTime.Now,
|
|
|
|
|
|
|
|
// AlarmStatus = "1",
|
|
|
|
|
|
|
|
// UpdateBy = "WCS",
|
|
|
|
|
|
|
|
// UpdateTime = DateTime.Now
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// dbContext.SaveChanges();
|
|
|
|
|
|
|
|
// errorCount = 0;
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -533,7 +501,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (errorCount > 20)
|
|
|
|
if (errorCount > 3)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger.Error($"Plc31短线重连失败超过{errorCount}次");
|
|
|
|
_logger.Error($"Plc31短线重连失败超过{errorCount}次");
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
@ -561,25 +529,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
|
|
|
|
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
|
|
|
|
if (errorCount > 0 && isOver)
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
{
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.U型线Plc通讯异常);
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
|
|
|
SystemData.DeleteWaringLog(dbContext, WaringType.U型线Plc通讯异常);
|
|
|
|
|
|
|
|
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
|
|
|
|
|
|
|
|
//if (dmsRecordAlarmTime != null)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
|
|
|
|
|
|
|
|
// dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// AlarmEndTime = DateTime.Now,
|
|
|
|
|
|
|
|
// AlarmStatus = "1",
|
|
|
|
|
|
|
|
// UpdateBy = "WCS",
|
|
|
|
|
|
|
|
// UpdateTime = DateTime.Now
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// dbContext.SaveChanges();
|
|
|
|
|
|
|
|
// errorCount = 0;
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|