liuwf 1 year ago
commit 22c2c73a36

@ -0,0 +1,39 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_base_alarm_rule")]
public class DmsBaseAlarmRule
{
[Column("alarm_rule_id")]
public long AlarmRuleId { get; set; }
[Column("device_id")]
public long DeviceId { get; set; }
[Column("alarm_type")]
public string AlarmType { get; set; }
[Column("alarm_level")]
public string AlarmLevel { get; set; }
[Column("notice_type")]
public string NoticeType { get; set; }
[Column("recover_type")]
public string RecoverType { get; set; }
[Column("continue_time")]
public long ContinueTime { get; set; }
[Column("alarm_reason")]
public string AlarmReason { get; set; }
[Column("handle_suggest")]
public string HandleSuggest { get; set; }
[Column("remark")]
public string Remark { get; set; }
public string Status { get; set; }
}
}

@ -0,0 +1,44 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_base_device_ledger")]
public class DmsBaseDeviceLedger
{
[Column("device_id")]
public long DeviceId { get; set; }
[Column("device_code")]
public string DeviceCode { get; set; }
[Column("device_name")]
public string DeviceName { get; set; }
[Column("station_id")]
public string StationId { get; set; }
[Column("asset_number")]
public string AssetNumber { get; set; }
[Column("device_location")]
public string DeviceLocation { get; set; }
[Column("device_type_id")]
public string DeviceTypeId { get; set; }
[Column("device_spec")]
public string DeviceSpec { get; set; }
[Column("supplier_id")]
public string SupplierId { get; set; }
[Column("device_status")]
public string DeviceStatus { get; set; }
[Column("is_flag")]
public int IsFlag { get; set; }
[Column("remark")]
public string Remark { get; set; }
}
}

@ -0,0 +1,66 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_record_alarm_info")]
public class DmsRecordAlarmInfo
{
[Column("alarm_id")]
public long AlarmId { get; set; }
[Column("device_id")]
public long DeviceId { get; set; }
[Column("alarm_rule_id")]
public long AlarmRuleId { get; set; }
[Column("alarm_begin_time")]
public DateTime AlarmBeginTime { get; set; }
[Column("alarm_end_time")]
public DateTime AlarmEndTime { get; set; }
[Column("continue_time")]
public long ContinueTime { get; set; }
[Column("alarm_reason")]
public string AlarmReason { get; set; }
[Column("alarm_data")]
public string AlarmData { get; set; }
[Column("alarm_status")]
public string AlarmStatus { get; set; }
[Column("handle_suggest")]
public string HandleSuggest { get; set; }
[Column("notice_status")]
public string NoticeStatus { get; set; }
[Column("handle_user")]
public string HandleUser { get; set; }
[Column("handle_time")]
public DateTime HandleTime { get; set; }
[Column("cause_analysis")]
public string CauseAnalysis { get; set; }
[Column("remark")]
public string Remark { get; set; }
[Column("create_by")]
public string CreateBy { get; set; }
[Column("create_time")]
public DateTime CreateTime { get; set; }
[Column("update_by")]
public string UpdateBy { get; set; }
[Column("update_time")]
public DateTime UpdateTime { get; set; }
}
}

@ -0,0 +1,48 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_record_alarm_time")]
public class DmsRecordAlarmTime
{
[Column("alarm_id")]
public long AlarmId { get; set; }
[Column("device_id")]
public long DeviceId { get; set; }
[Column("alarm_rule_id")]
public long AlarmRuleId { get; set; }
[Column("alarm_begin_time")]
public DateTime AlarmBeginTime { get; set; }
[Column("continue_time")]
public long ContinueTime { get; set; }
[Column("alarm_reason")]
public string AlarmReason { get; set; }
[Column("alarm_data")]
public string AlarmData { get; set; }
[Column("handle_suggest")]
public string HandleSuggest { get; set; }
[Column("remark")]
public string Remark { get; set; }
[Column("create_by")]
public string CreateBy { get; set; }
[Column("create_time")]
public DateTime CreateTime { get; set; }
[Column("update_by")]
public string UpdateBy { get; set; }
[Column("update_time")]
public DateTime UpdateTime { get; set; }
}
}

@ -79,5 +79,13 @@ namespace Khd.Core.EntityFramework
public DbSet<MesBaseBarcodeInfo> MesBaseBarcodeInfo { get; set; }
public DbSet<PlcPoint> PlcPoint { get; set; }
public DbSet<DmsBaseAlarmRule> DmsBaseAlarmRule { get; set; }
public DbSet<DmsBaseDeviceLedger> DmsBaseDeviceLedger { get; set; }
public DbSet<DmsRecordAlarmInfo> DmsRecordAlarmInfo { get; set; }
public DbSet<DmsRecordAlarmTime> DmsRecordAlarmTime { get; set; }
}
}

@ -64,6 +64,8 @@ namespace Khd.Core.Wcs.Global
public static List<BasePlc> basePlcs = new List<BasePlc>();
public static List<PlcConfig> PlcConfigs { get; set; }
public static int DeleteLogDay { get; internal set; }
public static List<DmsBaseAlarmRule> DmsBaseAlarmRuleList { get; set; }
public static List<string> BigContainerCodes = new List<string>() { "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004" };
public static Dictionary<int, Dictionary<string, PlcPoint>> PlcPoints = new Dictionary<int, Dictionary<string, PlcPoint>>();

@ -1,5 +1,4 @@
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs;
@ -43,6 +42,7 @@ namespace Khd.Core.Wcs
StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送
StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();//字典表Agv任务模板
StaticData.DmsBaseAlarmRuleList = dbContext.DmsBaseAlarmRule.ToList();
foreach (var plcConfig in StaticData.PlcConfigs)
{
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@ -64,6 +64,7 @@ namespace Khd.Core.Wcs
//创建定时器
SystemTimer systemTimer = new SystemTimer(_host);
systemTimer.Start();
//创建任务
CreateTaskByRecord createTaskByRecord = new(_host);
createTaskByRecord.StartPoint();

@ -10,7 +10,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SixLabors.ImageSharp;
using System.Data;
using System.Linq;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@ -1996,7 +1995,7 @@ namespace Khd.Core.Wcs.Wcs
foreach (var task in tasks)
{
var wmsRawStock = rawStock.Where(t => t.palletInfoCode == task.containerNo && t.materialId == order.MaterialId && t.saleOrderId == order.SaleOrderId).ToList();
decimal? total = wmsRawStock.Sum(t => t.totalAmount)- wmsRawStock.Sum(t => t.frozenAmount);
decimal? total = wmsRawStock.Sum(t => t.totalAmount) - wmsRawStock.Sum(t => t.frozenAmount);
needNumber -= total;
WmsBaseLocation wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locationCode == task.currPointNo).First();
index = wmsBaseLocation.locRow;

@ -8,7 +8,6 @@ using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{
@ -524,11 +523,11 @@ namespace Khd.Core.Wcs.Wcs
if (Convert.ToInt32(equipstate06Value) == 0)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01 && t.taskStatus<5).OrderBy(t => t.createTime).ToList();
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01 && t.taskStatus < 5).OrderBy(t => t.createTime).ToList();
foreach (var wcsTask in wcsTasks)
{
_logger.Info($"当前任务?{wcsTask.ToJsonString()}");
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == wcsTask.endPointId && t.objid != wcsTask.objid && t.nextPointId != 6).Any();
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == wcsTask.endPointId && t.objid != wcsTask.objid && t.nextPointId != 6).Any();
if (!hasTask)
{
wcsTask.serialNo ??= SystemData.GetSerialNo(dbContext);

@ -1,4 +1,5 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
@ -10,7 +11,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{
@ -694,7 +694,6 @@ namespace Khd.Core.Wcs.Wcs
endTime = DateTime.Now,
locationCode = wmsBaseLocation.locationCode,
executeStatus = "2",
returnFlag = null,
instockAmount = 1,
instockType = "2",
materialBatchCode = mesBaseBarcodeInfo.barcodeInfo,

@ -8,7 +8,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -1,4 +1,5 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
@ -10,7 +11,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{
@ -565,7 +565,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Remove(item);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
}catch (Exception ex)
}
catch (Exception ex)
{
_logger.Error($"入库异常捕捉:{ex.Message}");
}

@ -1,4 +1,5 @@
using Khd.Core.Domain.Models;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Library.Mapper;
@ -8,7 +9,6 @@ using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -7,7 +7,6 @@ using Khd.Core.Wcs.Global;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -1,4 +1,5 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
@ -8,7 +9,6 @@ using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Khd.Core.Domain.Dto.TaskType;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs

@ -1,4 +1,5 @@
using Khd.Core.Domain.Models;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Library.Mapper;
@ -7,7 +8,6 @@ using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -1,4 +1,5 @@
using Khd.Core.Domain.Models;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Library.Mapper;
@ -6,7 +7,6 @@ using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -2,19 +2,20 @@
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Khd.Core.Domain.Dto.TaskType;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
{
public class SystemTimer
{
private readonly LoggerUtils _logger = new ();
private readonly LoggerUtils _logger = new();
private readonly IHost host;
public SystemTimer(IHost host)
@ -65,9 +66,98 @@ namespace Khd.Core.Wcs.Wcs
IsBackground = true
};
deleteLogsThread.Start();
//var AgvAlarmThread = new Thread(AgvAlarmLogic)
//{
// Name = "AgvAlarmThread",
// IsBackground = true
//};
//AgvAlarmThread.Start();
Console.WriteLine($"{DateTime.Now}: SystemTimer started");
}
private void AgvAlarmLogic()
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
while (true)
{
using var transaction = dbContext.Database.BeginTransaction();
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsBaseDeviceLedgers = dbContext.DmsBaseDeviceLedger.ToList();
var wcsAgvStatuses = dbContext.WcsAgvStatus.ToList();
var agvStatus = from a in dmsBaseDeviceLedgers
from b in wcsAgvStatuses
where a.DeviceCode == b.RobotCode
select new
{
a.DeviceId,
b.Online,
b.Status
};
foreach (var item in agvStatus)
{
var dmsBaseAlarmRule = StaticData.DmsBaseAlarmRuleList.Where(t => t.Status == item.Status).FirstOrDefault();
if (dmsBaseAlarmRule != null)
{
DmsRecordAlarmTime alarmTime = new DmsRecordAlarmTime
{
AlarmBeginTime = DateTime.Now,
AlarmReason = dmsBaseAlarmRule.AlarmReason,
HandleSuggest = dmsBaseAlarmRule.HandleSuggest,
AlarmRuleId = dmsBaseAlarmRule.AlarmRuleId,
ContinueTime = dmsBaseAlarmRule.ContinueTime,
CreateBy = "WCS",
CreateTime = DateTime.Now,
DeviceId = item.DeviceId,
};
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.AlarmStatus = "0";
dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.Add(dmsRecordAlarmInfo);
dbContext.SaveChanges();
transaction.Commit();
}
else
{
var alarmTime = dbContext.DmsRecordAlarmTime
.Where(t => t.CreateBy == "WCS")
.Where(t => t.DeviceId == item.DeviceId)
.FirstOrDefault();
if (alarmTime != null)
{
dbContext.Remove(alarmTime);
dbContext.DmsRecordAlarmInfo
.Where(t => t.AlarmId == alarmTime.AlarmId)
.Update(t => new DmsRecordAlarmInfo
{
AlarmEndTime = DateTime.Now,
UpdateBy = "WCS",
UpdateTime = DateTime.Now
});
dbContext.SaveChanges();
transaction.Commit();
}
}
}
}
catch
{
try
{
transaction.Rollback();
}
catch
{
}
}
Thread.Sleep(3000);
}
}
/// <summary>
/// 定时清除日志文件
/// </summary>
@ -192,12 +282,58 @@ namespace Khd.Core.Wcs.Wcs
/// </summary>
private void PlcHearBeat220Logic()
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
int errorCount = 0;
while (true)
{
try
{
if (errorCount > 20)
{
_logger.Error($"Plc220短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault();
if (dmsRecordAlarmTime == null)
{
var alarmTime = new DmsRecordAlarmTime
{
DeviceId = 15,
AlarmBeginTime = DateTime.Now,
AlarmReason = "Plc220短线重连失败",
HandleSuggest = "检查Plc220网络连接",
AlarmRuleId = 4,
ContinueTime = 10000,
CreateBy = "WCS",
CreateTime = DateTime.Now,
};
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.AlarmStatus = "0";
dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.Add(dmsRecordAlarmInfo);
dbContext.SaveChanges();
}
}
StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress);
if (errorCount > 0)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
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
{
@ -208,6 +344,7 @@ namespace Khd.Core.Wcs.Wcs
}
catch (Exception ex2)
{
errorCount++;
_logger.Error("Plc短线重连失败" + ex2.Message);
}
}
@ -220,14 +357,60 @@ namespace Khd.Core.Wcs.Wcs
/// </summary>
private void PlcHeartBeat30Logic()
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30");
bool heartBeatCount = false;
int errorCount = 0;
while (true)
{
try
{
if (errorCount > 20)
{
_logger.Error($"Plc30短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
if (dmsRecordAlarmTime == null)
{
var alarmTime = new DmsRecordAlarmTime
{
DeviceId = 13,
AlarmBeginTime = DateTime.Now,
AlarmReason = "Plc30短线重连失败",
HandleSuggest = "检查Plc30网络连接",
AlarmRuleId = 4,
ContinueTime = 10000,
CreateBy = "WCS",
CreateTime = DateTime.Now,
};
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.AlarmStatus = "0";
dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.Add(dmsRecordAlarmInfo);
dbContext.SaveChanges();
}
}
heartBeatCount = !heartBeatCount;
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
if (errorCount > 0)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
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
{
@ -238,6 +421,7 @@ namespace Khd.Core.Wcs.Wcs
}
catch (Exception ex2)
{
errorCount++;
_logger.Error("Plc短线重连失败" + ex2.Message);
}
}
@ -250,14 +434,60 @@ namespace Khd.Core.Wcs.Wcs
/// </summary>
private void PlcHeartBeat31Logic()
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
bool heartBeatCount = false;
int errorCount = 0;
while (true)
{
try
{
if (errorCount > 20)
{
_logger.Error($"Plc31短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
if (dmsRecordAlarmTime == null)
{
var alarmTime = new DmsRecordAlarmTime
{
DeviceId = 14,
AlarmBeginTime = DateTime.Now,
AlarmReason = "Plc31短线重连失败",
HandleSuggest = "检查Plc31网络连接",
AlarmRuleId = 4,
ContinueTime = 10000,
CreateBy = "WCS",
CreateTime = DateTime.Now,
};
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.AlarmStatus = "0";
dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.Add(dmsRecordAlarmInfo);
dbContext.SaveChanges();
}
}
heartBeatCount = !heartBeatCount;
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
if (errorCount > 0)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
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)
{
@ -270,6 +500,7 @@ namespace Khd.Core.Wcs.Wcs
}
catch (Exception ex2)
{
errorCount++;
_logger.Error("Plc短线重连失败" + ex2.Message);
}
}

@ -1,4 +1,5 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
@ -10,7 +11,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -1,4 +1,5 @@
using Khd.Core.Domain.Models;
using Khd.Core.Domain.Dto.TaskType;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Library.Mapper;
@ -8,7 +9,6 @@ using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
using Khd.Core.Domain.Dto.TaskType;
namespace Khd.Core.Wcs.Wcs
{

@ -26,7 +26,6 @@ using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Media3D;
using System.Windows.Threading;
using Z.EntityFramework.Plus;
@ -288,7 +287,7 @@ namespace Khd.Core.Wpf.Form
}
}
private void ReturnOrderTimer(object? obj)
{
using var scope = _host.Services.CreateScope();
@ -418,7 +417,7 @@ namespace Khd.Core.Wpf.Form
// Step 3: 计算每个申请单物料在各个托盘中的数量
var palletMaterialSummary = wmsRawStocks
.GroupBy(t => new { t.materialId, t.palletInfoCode,t.saleOrderId })
.GroupBy(t => new { t.materialId, t.palletInfoCode, t.saleOrderId })
.Select(g => new
{
MaterialId = g.Key.materialId,
@ -452,7 +451,7 @@ namespace Khd.Core.Wpf.Form
var orderNumber = from r in result
from m in mesBaseMaterialInfos
where r.MaterialId== m.MaterialId
where r.MaterialId == m.MaterialId
select new
{
materiaName = m.MaterialName,
@ -479,8 +478,8 @@ namespace Khd.Core.Wpf.Form
// thisOutAmount = t.Sum(x => x.totalAmount) - t.Sum(x => x.frozenAmount)
// });
//List<WmsRawOutstock> endStationCodeOutRaw = wmsRawOutstocks.Where(t => t.endStationCode == baseEquip.endStationCode).ToList();
//List<long?> materialIds = endStationCodeOutRaw.Select(t => t.materialId).ToList();
//List<MesBaseMaterialInfo> mesBaseMaterialInfos = dbContext.MesBaseMaterialInfo.Where(t => materialIds.Contains(t.MaterialId)).ToList();
//var bill = endStationCodeOutRaw.GroupBy(t => new { t.materialId, t.materialBatch, t.saleOrderId })
@ -507,7 +506,7 @@ namespace Khd.Core.Wpf.Form
// thisOutAmount = b.thisOutAmount,
// isSendOver = a.outstockAmount <= (a.realOutstockAmount + b.thisOutAmount) ? "已出完" : "未出完"
// };
Dispatcher.Invoke(() =>
{
this.OutTaskNumber.ItemsSource = orderNumber;
@ -2125,7 +2124,7 @@ namespace Khd.Core.Wpf.Form
try
{
string containerCode = txtOutBox.Text;
if (containerCode.Length < 15)
return;
if (!string.IsNullOrEmpty(containerCode))
@ -2159,7 +2158,7 @@ namespace Khd.Core.Wpf.Form
{
try
{
outMaterialNameTxt.Text ="";
outMaterialNameTxt.Text = "";
outMaterialSpecTxt.Text = "";
string barCode = txtOutBarCode.Text;
string containerCode = txtOutBox.Text;
@ -2368,7 +2367,7 @@ namespace Khd.Core.Wpf.Form
HandyControl.Controls.MessageBox.Info("请先扫描容器号和条码!");
}
}
catch(Exception ex)
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
@ -3224,7 +3223,7 @@ namespace Khd.Core.Wpf.Form
{
BasePlcpoint trayStatus = SystemData.BasePlcpoints.First(t => t.plcpointNo == "trayStatus");
var trayStatusValue = SystemData.PlcDic[0].Read(trayStatus.plcpointAddress);
if(trayStatusValue == null || Convert.ToInt32(trayStatusValue) == 0)
if (trayStatusValue == null || Convert.ToInt32(trayStatusValue) == 0)
{
HandyControl.Controls.MessageBox.Error("托盘库开启自动状态!");
return;
@ -4157,7 +4156,7 @@ namespace Khd.Core.Wpf.Form
// 触发按钮的点击事件
OutRaw();
}
}
}
}

@ -1,7 +1,6 @@
using Khd.Core.Domain.Dto.TaskType;
using System;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
namespace Khd.Core.Wpf.myConverter

Loading…
Cancel
Save