diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs index ce42d71..35e77c9 100644 --- a/src/Khd.Core.Application/WcsTaskApplication.cs +++ b/src/Khd.Core.Application/WcsTaskApplication.cs @@ -394,6 +394,7 @@ namespace Khd.Core.Application WcsTaskManual wcsTaskManual = new WcsTaskManual(); wcsTaskManual.taskType = 999; wcsTaskManual.objid = _snowId.NextId(); + wcsTaskManual.startPointNo = callMaterial.locationCode; wcsTaskManual.orderId = Convert.ToInt64(callMaterial.rawOutstockId); _dbContext.Add(wcsTaskManual); _dbContext.SaveChanges(); diff --git a/src/Khd.Core.Domain/Dto/waring/WaringType.cs b/src/Khd.Core.Domain/Dto/waring/WaringType.cs new file mode 100644 index 0000000..b475795 --- /dev/null +++ b/src/Khd.Core.Domain/Dto/waring/WaringType.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Khd.Core.Domain.Dto.waring +{ + public enum WaringType + { + 提升机Plc通讯异常 = 5001, + U型线Plc通讯异常, + 设备Plc通讯异常, + 一楼接驳位异常, + 二楼楼接驳位异常, + 三楼接驳位异常, + 四楼接驳位异常, + 五楼接驳位异常, + 五楼CTU入库任务创建失败, + 五楼CTU出库任务创建失败, + 五楼背负任务创建失败, + 五楼入库任务创建失败, + 五楼移库任务创建失败, + 五楼出库任务创建失败, + 二楼入库任务创建失败, + 二楼移库任务创建失败, + 二楼出库任务创建失败, + 三楼入库任务创建失败, + 三楼移库任务创建失败, + 三楼出库任务创建失败, + 绑定物料无仓库信息, + 提升机任务下发异常 + } +} diff --git a/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs b/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs index a366da8..58eac3a 100644 --- a/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs +++ b/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs @@ -3,6 +3,7 @@ public class CallMaterial { public string rawOutstockId { get; set; } + public string locationCode { get; set; } public string method { get; set; } } diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 0cf185c..24545fb 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -35,20 +35,18 @@ namespace Khd.Core.Wcs /// public void Start() { - + LoggerUtils logger = new LoggerUtils(); using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); try { - //dbContext.WmsBaseLocation.Update(t => new Dictionary() { { "1", new WmsBaseLocation { locationStatus="1" } } }); - StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用 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)) @@ -67,11 +65,9 @@ namespace Khd.Core.Wcs StaticData.PlcDic.TryAdd(plcConfig.Code, plc); } } - //创建定时器 SystemTimer systemTimer = new(_host); systemTimer.Start(); - //创建任务 CreateTaskByRecord createTaskByRecord = new(_host); createTaskByRecord.StartPoint(); @@ -125,12 +121,7 @@ namespace Khd.Core.Wcs Console.WriteLine(ex.Message); logger.Error(ex.Message + "\n" + ex.StackTrace); } - - } - - - - + } } diff --git a/src/Khd.Core.Wcs/SystemData.cs b/src/Khd.Core.Wcs/SystemData.cs index 10f3fb0..5ad9862 100644 --- a/src/Khd.Core.Wcs/SystemData.cs +++ b/src/Khd.Core.Wcs/SystemData.cs @@ -1,11 +1,15 @@ -using Khd.Core.Domain.Models; +using Khd.Core.Domain.Dto.waring; +using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; +using Khd.Core.Library.Mapper; +using Khd.Core.Wcs.Global; +using Z.EntityFramework.Plus; namespace Khd.Core.Wcs { public class SystemData { - public readonly static int maxTray = 5; + public readonly static int maxTray = 10; private static long _serialNo { get; set; } = 1; @@ -98,8 +102,69 @@ namespace Khd.Core.Wcs } } + public static void InsertWaringLog(DefaultDbContext dbContext, WaringType WaringType, string message = "") + { + try + { + var alarmRule = StaticData.DmsBaseAlarmRuleList.Where(t => t.AlarmRuleId == (long)WaringType).FirstOrDefault(); + if (alarmRule != null) + { + var alarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.AlarmRuleId == (long)WaringType).FirstOrDefault(); + if (alarmTime == null) + { + alarmTime = new DmsRecordAlarmTime() + { + AlarmId = StaticData.SnowId.NextId(), + AlarmRuleId = (long)WaringType, + DeviceId = alarmRule.DeviceId, + AlarmBeginTime = DateTime.Now, + ContinueTime = alarmRule.ContinueTime, + AlarmReason = alarmRule.AlarmReason, + HandleSuggest = alarmRule.HandleSuggest, + CreateBy = "WCS", + CreateTime = DateTime.Now, + AlarmData = message + }; + var dmsRecordAlarmInfo = CoreMapper.Map(alarmTime); + dmsRecordAlarmInfo.NoticeStatus = "0"; + dmsRecordAlarmInfo.AlarmStatus = "0"; + dbContext.Add(dmsRecordAlarmInfo); + dbContext.Add(alarmTime); + dbContext.SaveChanges(); + } + } + } + catch + { + + } + + } + + + public static void DeleteWaringLog(DefaultDbContext dbContext, WaringType WaringType) + { + try + { + var alarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.AlarmRuleId == (long)WaringType).FirstOrDefault(); + if (alarmTime != null) + { + dbContext.Remove(alarmTime); + dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == alarmTime.AlarmId) + .Update(t => new DmsRecordAlarmInfo() { AlarmStatus = "2" }); + dbContext.SaveChanges(); + } + } + catch + { + + } + + } + public readonly static object SecondTaskLock = new(); public readonly static object ThirdTaskLock = new(); public readonly static object FiveTaskLock = new(); + } } diff --git a/src/Khd.Core.Wcs/Wcs/BackUpData.cs b/src/Khd.Core.Wcs/Wcs/BackUpData.cs index dcd325a..f474d77 100644 --- a/src/Khd.Core.Wcs/Wcs/BackUpData.cs +++ b/src/Khd.Core.Wcs/Wcs/BackUpData.cs @@ -21,6 +21,7 @@ namespace Khd.Core.Wcs.Wcs Thread OrderBakThread = new Thread(MonitorInLocatorPoint); OrderBakThread.Start(); } + public void MonitorInLocatorPoint() { // 创建一个定时器对象,设置时间间隔为24小时 diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 96a5105..cc1ade2 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -378,7 +378,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationStatus == "1") .OrderByDescending(t => t.locColumn) .ToList(); - + List containerCodes = wmsBaseLocations .Where(t => t.locDeep == 1) .Select(t => t.containerCode).ToList();//深库位的托盘 @@ -551,77 +551,77 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); #region 原逻辑 - //if (baseEquip.emptyCount == (SystemData.maxTray / 2)) - //{ - // var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2)); - // if (endEquip != null) - // { - // var wcsTask = new WcsTask() - // { - // objid = StaticData.SnowId.NextId(), - // serialNo = SystemData.GetSerialNo(dbContext), - // taskType = 40, - // nextPointId = agvEquip.objid, - // nextPointNo = agvEquip.equipNo, - // endPointId = baseEquip.objid, - // endPointNo = baseEquip.equipNo, - // currPointId = endEquip.objid, - // currPointNo = endEquip.equipNo, - // equipmentNo = agvEquip.equipNo, - // useFlag = 1, - // qty = 5, - // isEmpty = "1", - // taskStatus = 0, - // createBy = "WCS", - // createTime = DateTime.Now, - // floorNo = 3, - // fromFloorNo = 3, - // masterId = 0, - // orderId = 0, - // materialId = 0, - // }; - // WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - // dbContext.Add(wcsTask); - // dbContext.Add(wcsTaskLog); - // dbContext.SaveChanges(); - // } - // else - // { - // endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0); - // if (endEquip != null) - // { - // var wcsTask = new WcsTask() - // { - // objid = StaticData.SnowId.NextId(), - // serialNo = SystemData.GetSerialNo(dbContext), - // taskType = 43, - // nextPointId = agvEquip.objid, - // nextPointNo = agvEquip.equipNo, - // endPointId = endEquip.objid, - // endPointNo = endEquip.equipNo, - // currPointId = baseEquip.objid, - // currPointNo = baseEquip.equipNo, - // equipmentNo = agvEquip.equipNo, - // useFlag = 1, - // qty = 5, - // isEmpty = "1", - // taskStatus = 0, - // createBy = "WCS", - // createTime = DateTime.Now, - // floorNo = 3, - // fromFloorNo = 3, - // masterId = 0, - // orderId = 0, - // materialId = 0, - // }; - // WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - // dbContext.Add(wcsTask); - // dbContext.Add(wcsTaskLog); - // dbContext.SaveChanges(); - // } - // } - //} - //else + if (baseEquip.emptyCount == (SystemData.maxTray / 2)) + { + var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2)); + if (endEquip != null) + { + var wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + taskType = 40, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = baseEquip.objid, + endPointNo = baseEquip.equipNo, + currPointId = endEquip.objid, + currPointNo = endEquip.equipNo, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = 5, + isEmpty = "1", + taskStatus = 0, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 3, + fromFloorNo = 3, + masterId = 0, + orderId = 0, + materialId = 0, + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + } + else + { + endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0); + if (endEquip != null) + { + var wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + taskType = 43, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = endEquip.objid, + endPointNo = endEquip.equipNo, + currPointId = baseEquip.objid, + currPointNo = baseEquip.equipNo, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = 5, + isEmpty = "1", + taskStatus = 0, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 3, + fromFloorNo = 3, + masterId = 0, + orderId = 0, + materialId = 0, + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + } + } + } + else #endregion if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值 { @@ -936,8 +936,6 @@ namespace Khd.Core.Wcs.Wcs { WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();//调接口生成的任务 - - if (wcsTaskManual != null) { var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId); @@ -956,9 +954,11 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationScrapType == "1") .Where(t => t.warehouseId == 311) .Where(t => t.locationStatus == "1").ToList(); + var wmsBaseLocations = AllWmsBaseLocations .Where(t => t.warehouseId == 311) .Where(t => wmsRawStockLocations.Contains(t.locationCode)) + .WhereIf(!string.IsNullOrEmpty(wcsTaskManual.startPointNo),t=>t.locationCode== wcsTaskManual.startPointNo) .ToList(); var bill = from a in wmsBaseLocations from b in wmsRawStocks @@ -966,17 +966,26 @@ namespace Khd.Core.Wcs.Wcs select new { a, b }; WmsBaseLocation? wmsBaseLocation = null; WmsRawStock? wmsRawStock = null; - bill = bill.OrderBy(t => t.b.instockDate.Value.Date);//按某个时间段 - + var inLocations = AllWmsBaseLocations.Where(t => t.locDeep == 1).Where(t => !string.IsNullOrEmpty(t.containerCode)).ToList(); + var outLocations = AllWmsBaseLocations.Where(t => t.locDeep == 2).Where(t => string.IsNullOrEmpty(t.containerCode)).ToList(); + var list = new List(); + foreach (var item in inLocations) + { + if (outLocations.Where(t => t.locRow == (item.locRow % 2 == 0 ? item.locRow - 1 : item.locRow + 1)) + .Where(t => t.locColumn == item.locColumn).Any()) + { + list.Add(item.locationCode); + } + } + bill = bill.OrderBy(t => list.Contains(t.a.locationCode) ? 0 : 1).OrderBy(t => t.b.instockDate.Value.Date);//按某个时间段 #region 如果有需要优先投料的库位,则该库位优先投料 - List PreferredOutsLocation = dbContext.WmsRawPreferredOut.Where(x=>x.WarehouseId==311).ToList().Select(x=>x.LocationCode).ToList(); - if (PreferredOutsLocation!=null && PreferredOutsLocation.Count > 0) + List PreferredOutsLocation = dbContext.WmsRawPreferredOut.Where(x => x.WarehouseId == 311).ToList().Select(x => x.LocationCode).ToList(); + if (PreferredOutsLocation != null && PreferredOutsLocation.Count > 0) { bill.OrderBy(t => PreferredOutsLocation.Contains(t.a.locationCode) ? 0 : 1); } - - #endregion + #endregion foreach (var item in bill) { @@ -1108,7 +1117,7 @@ namespace Khd.Core.Wcs.Wcs } } - else if(fromBaseLocation != null&& fromBaseLocation.locationStatus != "1") + else if (fromBaseLocation != null && fromBaseLocation.locationStatus != "1") { //浅库位状态异常,找寻下一个可出库库存 continue; @@ -1177,6 +1186,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.Add(wcsTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); + break; } } } @@ -1344,6 +1354,18 @@ namespace Khd.Core.Wcs.Wcs select new { a, b }; BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28); + var inLocations = AllWmsBaseLocations.Where(t => t.locDeep == 1).Where(t => !string.IsNullOrEmpty(t.containerCode)).ToList(); + var outLocations = AllWmsBaseLocations.Where(t => t.locDeep == 2).Where(t => string.IsNullOrEmpty(t.containerCode)).ToList(); + var list = new List(); + foreach (var location in inLocations) + { + if (outLocations.Where(t => t.locRow == (location.locRow % 2 == 0 ? location.locRow - 1 : location.locRow + 1)) + .Where(t => t.locColumn == location.locColumn).Any()) + { + list.Add(location.locationCode); + } + } + bill = bill.OrderBy(t => list.Contains(t.a.locationCode) ? 0 : 1); foreach (var b in bill) { item.executeStatus = "1"; @@ -1677,6 +1699,18 @@ namespace Khd.Core.Wcs.Wcs WmsProductStock? stock = null; BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1); + var inLocations = AllWmsBaseLocations.Where(t => t.locDeep == 1).Where(t => !string.IsNullOrEmpty(t.containerCode)).ToList(); + var outLocations = AllWmsBaseLocations.Where(t => t.locDeep == 2).Where(t => string.IsNullOrEmpty(t.containerCode)).ToList(); + var list = new List(); + foreach (var loc in inLocations) + { + if (outLocations.Where(t => t.locRow == (loc.locRow % 2 == 0 ? loc.locRow - 1 : loc.locRow + 1)) + .Where(t => t.locColumn == loc.locColumn).Any()) + { + list.Add(loc.locationCode); + } + } + bill = bill.OrderBy(t => list.Contains(t.a.locationCode) ? 0 : 1); foreach (var b in bill) { item.executeStatus = "1"; @@ -2220,7 +2254,7 @@ namespace Khd.Core.Wcs.Wcs tasks.Add(wcsTask); location.locationStatus = "6"; location.updateBy = "WCS"; - // location.ContainerStatus = "2"; + // location.ContainerStatus = "2"; location.updateTime = DateTime.Now; dbContext.Update(location); dbContext.Update(stock); @@ -2336,6 +2370,18 @@ namespace Khd.Core.Wcs.Wcs BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28); BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode); + var inLocations = AllWmsBaseLocations.Where(t => t.locDeep == 1).Where(t => !string.IsNullOrEmpty(t.containerCode)).ToList(); + var outLocations = AllWmsBaseLocations.Where(t => t.locDeep == 2).Where(t => string.IsNullOrEmpty(t.containerCode)).ToList(); + var list = new List(); + foreach (var location in inLocations) + { + if (outLocations.Where(t => t.locRow == (location.locRow % 2 == 0 ? location.locRow - 1 : location.locRow + 1)) + .Where(t => t.locColumn == location.locColumn).Any()) + { + list.Add(location.locationCode); + } + } + bill = bill.OrderBy(t => list.Contains(t.a.locationCode) ? 0 : 1); foreach (var b in bill) { item.executeStatus = "1"; diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index a23fe6f..d39ea7e 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -1,4 +1,5 @@ -using Khd.Core.Domain.Models; +using Khd.Core.Domain.Dto.waring; +using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library; using Khd.Core.Library.Mapper; @@ -421,8 +422,10 @@ namespace Khd.Core.Wcs.Wcs } } else - { //TODO 物料未绑定仓库,添加报警 - + { + //TODO 物料未绑定仓库,添加报警 + SystemData.InsertWaringLog(dbContext,WaringType.绑定物料无仓库信息); + continue; } } } @@ -493,6 +496,7 @@ namespace Khd.Core.Wcs.Wcs _logger.Error(ex.Message + "\n" + ex.StackTrace); } } + SystemData.DeleteWaringLog(dbContext,WaringType.绑定物料无仓库信息); Thread.Sleep(3000); } } @@ -737,6 +741,7 @@ namespace Khd.Core.Wcs.Wcs transaction.Commit(); } } + SystemData.DeleteWaringLog(dbContext, WaringType.提升机任务下发异常); break; } else @@ -764,6 +769,7 @@ namespace Khd.Core.Wcs.Wcs } catch { + } if (ex is PlcException) { @@ -771,6 +777,7 @@ namespace Khd.Core.Wcs.Wcs } else { + SystemData.InsertWaringLog(dbContext, WaringType.提升机任务下发异常, ex.Message); _logger.Error(ex.Message + "\n" + ex.StackTrace); } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 189df8a..646c529 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -1,4 +1,5 @@ using Khd.Core.Domain.Dto.TaskType; +using Khd.Core.Domain.Dto.waring; using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index 1a8d83f..7ff21b2 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -290,21 +290,21 @@ namespace Khd.Core.Wcs.Wcs } } } - if(wmsBaseLocation == null) - { // 找深库位有库存的库位对应的浅库位 - var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep==1).ToList(); - foreach (var item in stockLocations) - { - wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") - .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn) - .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) - .FirstOrDefault(); - if (wmsBaseLocation != null) - { - break; - } - } - } + //if(wmsBaseLocation == null) + //{ // 找深库位有库存的库位对应的浅库位 + // var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep==1).ToList(); + // foreach (var item in stockLocations) + // { + // wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") + // .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn) + // .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) + // .FirstOrDefault(); + // if (wmsBaseLocation != null) + // { + // break; + // } + // } + //} if(wmsBaseLocation == null) { // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常 var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x=>x.locDeep).ToList(); diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index 5b24cd6..fbc8d51 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -84,7 +84,7 @@ namespace Khd.Core.Wcs.Wcs if (wcsTask.taskType != 99)//不是人工任务 { bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any(); - if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0 && !hasTask)//小包入口要料 + if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1 && !hasTask)//小包入口要料 { dbContext.WcsTask.Remove(wcsTask);//删除原本的任务 WcsTask newTask = CoreMapper.Map(wcsTask); @@ -142,7 +142,7 @@ namespace Khd.Core.Wcs.Wcs if (wcsTask.endPointId == 36)//目的地是小包入口 { bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any(); - if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0 && !hasTask)//小包入口要料 + if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1 && !hasTask)//小包入口要料 { dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 677a889..f0cce30 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -1,4 +1,6 @@ -using Khd.Core.Domain.Dto.webapi; +using AngleSharp.Common; +using Khd.Core.Domain.Dto.waring; +using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library; @@ -74,9 +76,83 @@ namespace Khd.Core.Wcs.Wcs // IsBackground = true //}; //AgvAlarmThread.Start(); + + var locationThread = new Thread(LocationLogic) + { + Name = "LocationThread", + IsBackground = true + }; + locationThread.Start(); + Console.WriteLine($"{DateTime.Now}: SystemTimer started"); } + private void LocationLogic() + { + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + List basePlcs = dbContext.BasePlc.Where(t => t.Station.Contains("库位")).ToList(); + var list = basePlcs.Select(t => new + { + t.Id, + Station = t.Station.Replace("库位", ""), + t.Address, + locRow = t.Name.Substring(t.Name.IndexOf('[') + 1, 1), + locColumn = t.Name.Substring(t.Name.IndexOf(',') + 1).Replace("]", "").Replace("五楼半成品[", ""), + }).Select(t => new + { + t.Id, + t.Station, + t.Address, + t.locRow, + 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) + }); + + while (true) + { + try + { + var locations = dbContext.WmsBaseLocation.OrderBy(t => t.locRow).OrderBy(t => t.locColumn).ToList(); + foreach (var item in list) + { + WmsBaseLocation? wmsBaseLocation = locations.Where(t => t.locRow.ToString() == item.locRow) + .Where(t => t.locColumn.ToString() == item.locColumn) + .Where(t => t.layerNum.ToString() == item.layerNum) + .Where(t => t.warehouseId.ToString() == item.Station) + .FirstOrDefault(); + if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) + { + if (wmsBaseLocation.warehouseId == 512) + { + if (wmsBaseLocation.ContainerStatus == "1") + { + StaticData.PlcDic[2].Write(item.Address, true); + } + else + { + StaticData.PlcDic[2].Write(item.Address, false); + } + } + else + { + StaticData.PlcDic[2].Write(item.Address, true); + } + } + else + { + StaticData.PlcDic[2].Write(item.Address, false); + } + } + } + catch + { + + } + Thread.Sleep(1000 * 60 * 5); + } + } + private void AgvAlarmLogic() { using var scope = host.Services.CreateScope(); @@ -288,6 +364,7 @@ namespace Khd.Core.Wcs.Wcs using var dbContext = scope.ServiceProvider.GetRequiredService(); BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray"); int errorCount = 0; + bool isOver = false; while (true) { try @@ -296,45 +373,47 @@ namespace Khd.Core.Wcs.Wcs { _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(alarmTime); - dmsRecordAlarmInfo.AlarmStatus = "0"; - dmsRecordAlarmInfo.NoticeStatus = "0"; - dbContext.Add(dmsRecordAlarmInfo); - dbContext.SaveChanges(); - } + SystemData.InsertWaringLog(dbContext, WaringType.设备Plc通讯异常, $"Plc220短线重连失败超过{errorCount}次"); + //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(alarmTime); + // dmsRecordAlarmInfo.AlarmStatus = "0"; + // dmsRecordAlarmInfo.NoticeStatus = "0"; + // dbContext.Add(dmsRecordAlarmInfo); + // dbContext.SaveChanges(); + //} } StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress); - if (errorCount > 0) + if (errorCount > 0 && isOver) { 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; - } + 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 @@ -343,10 +422,12 @@ namespace Khd.Core.Wcs.Wcs { StaticData.PlcDic[2] = new Plc.S7.Plc(StaticData.PlcDic[2].CPU, StaticData.PlcDic[2].IP, StaticData.PlcDic[2].Port, StaticData.PlcDic[2].Rack, StaticData.PlcDic[2].Slot); StaticData.PlcDic[2].Open(); + isOver = true; } catch (Exception ex2) { errorCount++; + isOver = false; _logger.Error("Plc短线重连失败" + ex2.Message); } } @@ -363,6 +444,7 @@ namespace Khd.Core.Wcs.Wcs using var dbContext = scope.ServiceProvider.GetRequiredService(); BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30"); bool heartBeatCount = false; + bool isOver = false; int errorCount = 0; while (true) { @@ -372,47 +454,49 @@ namespace Khd.Core.Wcs.Wcs { _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(alarmTime); - dmsRecordAlarmInfo.AlarmStatus = "0"; - dmsRecordAlarmInfo.NoticeStatus = "0"; - dbContext.Add(dmsRecordAlarmTime); - dbContext.Add(dmsRecordAlarmInfo); - dbContext.SaveChanges(); - } + SystemData.InsertWaringLog(dbContext, WaringType.提升机Plc通讯异常, $"Plc30短线重连失败超过{errorCount}次"); + //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(alarmTime); + // dmsRecordAlarmInfo.AlarmStatus = "0"; + // dmsRecordAlarmInfo.NoticeStatus = "0"; + // dbContext.Add(dmsRecordAlarmTime); + // dbContext.Add(dmsRecordAlarmInfo); + // dbContext.SaveChanges(); + //} } heartBeatCount = !heartBeatCount; StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString()); - if (errorCount > 0) + if (errorCount > 0 && isOver) { 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; - } + 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 @@ -421,10 +505,12 @@ namespace Khd.Core.Wcs.Wcs { StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot); StaticData.PlcDic[0].Open(); + isOver = true; } catch (Exception ex2) { errorCount++; + isOver = false; _logger.Error("Plc短线重连失败" + ex2.Message); } } @@ -441,6 +527,7 @@ namespace Khd.Core.Wcs.Wcs using var dbContext = scope.ServiceProvider.GetRequiredService(); BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart"); bool heartBeatCount = false; + bool isOver = false; int errorCount = 0; while (true) { @@ -450,46 +537,48 @@ namespace Khd.Core.Wcs.Wcs { _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(alarmTime); - dmsRecordAlarmInfo.AlarmStatus = "0"; - dmsRecordAlarmInfo.NoticeStatus = "0"; - dbContext.Add(dmsRecordAlarmInfo); - dbContext.SaveChanges(); - } + SystemData.InsertWaringLog(dbContext, WaringType.U型线Plc通讯异常, $"Plc31短线重连失败超过{errorCount}次"); + //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(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) + if (errorCount > 0 && isOver) { 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; - } + 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) @@ -500,10 +589,12 @@ namespace Khd.Core.Wcs.Wcs { StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot); StaticData.PlcDic[1].Open(); + isOver = true; } catch (Exception ex2) { errorCount++; + isOver = false; _logger.Error("Plc短线重连失败" + ex2.Message); } } @@ -710,7 +801,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时更新三楼AGV信息 /// - private void ThirdAgvLogic() + public void ThirdAgvLogic() { try { @@ -741,21 +832,20 @@ namespace Khd.Core.Wcs.Wcs #region 经过走廊区域报警 var Agv3FLED = StaticData.BasePlcpointList.First(t => t.id == 76); - if(Agv3FLED != null) + if (Agv3FLED != null) { if (int.Parse(cardStatus.PosX) >= 53040 && int.Parse(cardStatus.PosX) <= 58090 && (int.Parse(cardStatus.PosY) >= 53520 && int.Parse(cardStatus.PosY) <= 64590)) { - // Console.WriteLine("=======>3F走廊区域预警"); - + //Console.WriteLine("=======>3F走廊区域预警"); + StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, true, Agv3FLED.plcpointLength.ToString()); } else { - // Console.WriteLine("3F走廊区域正常"); + //Console.WriteLine("3F走廊区域正常"); StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, false, Agv3FLED.plcpointLength.ToString()); } } - #endregion } } @@ -813,7 +903,7 @@ namespace Khd.Core.Wcs.Wcs StaticData.PlcDic[0].WriteToPoint(Agv2FLED.plcpointAddress, false, Agv2FLED.plcpointLength.ToString()); } } - + #endregion } diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs index e46a10d..2483db8 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs @@ -94,17 +94,18 @@ namespace Khd.Core.Wcs.Wcs .Select(t => t.containerCode).ToList(); //相同型号及销售订单的深库位库存 - + List wmsRawStocks = dbContext.WmsRawStock.Where(t => t.materialId == mesBaseBarcodeInfo.materialId) - .Where(t => t.saleOrderId == mesBaseBarcodeInfo.saleOrderId) - .Where(t => DeepContainerCodes.Contains(t.palletInfoCode)) + .Where(t => t.saleOrderId == mesBaseBarcodeInfo.saleOrderId) + .Where(t => DeepContainerCodes.Contains(t.palletInfoCode)) .Where(t => t.warehouseId == 311).ToList(); if (wmsRawStocks.Count > 0) - { //优先找同销售订单的有库存的深库位对应的浅库位 + { + //优先找同销售订单的有库存的深库位对应的浅库位 foreach (var wmsRawStock in wmsRawStocks) { // 深库位库存对用的Location信息 - var deepStockLocation = wmsBaseLocations.Where(t => t.containerCode == wmsRawStock.palletInfoCode).FirstOrDefault(); + var deepStockLocation = wmsBaseLocations.Where(t => t.containerCode == wmsRawStock.palletInfoCode).First(); wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") .Where(t => t.locDeep == 2 && t.locColumn == deepStockLocation.locColumn) .Where(t => t.locRow == (deepStockLocation.locRow % 2 == 0 ? (deepStockLocation.locRow - 1) : (deepStockLocation.locRow + 1))) @@ -115,21 +116,22 @@ namespace Khd.Core.Wcs.Wcs } } } - if (wmsBaseLocation == null) - { // 找深库位有库存的库位对应的浅库位 - var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep == 1).ToList(); - foreach (var item in stockLocations) - { - wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") - .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn) - .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) - .FirstOrDefault(); - if (wmsBaseLocation != null) - { - break; - } - } - } + //if (wmsBaseLocation == null) + //{ + // // 找深库位有库存的库位对应的浅库位 + // var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep == 1).ToList(); + // foreach (var item in stockLocations) + // { + // wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") + // .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn) + // .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) + // .FirstOrDefault(); + // if (wmsBaseLocation != null) + // { + // break; + // } + // } + //} if (wmsBaseLocation == null) { // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常 var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList(); @@ -157,9 +159,9 @@ namespace Khd.Core.Wcs.Wcs } } - if ( wmsBaseLocation != null) + if (wmsBaseLocation != null) { - + dbContext.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); newTask.objid = StaticData.SnowId.NextId(); @@ -190,7 +192,7 @@ namespace Khd.Core.Wcs.Wcs _logger.Info("三楼接驳位调度入库任务,未找到库位"); // TODO: 没有找到库位,添加报警处理 Thread.Sleep(1000 * 5); - + } } } diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json index fb47994..78f9812 100644 --- a/src/Khd.Core.Wcs/appsettings.json +++ b/src/Khd.Core.Wcs/appsettings.json @@ -1,20 +1,20 @@ { "ConnectionStrings": { //"DefaultConnection": "server=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True", - //"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" + "DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" - "DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" + //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" }, "DeleteLogDays": 10,//删除日志的时间间隔,单位:天 "PlcConfigs": [ - { - "IP": "192.168.2.30", - "Port": 102, //102是默认端口 - "CpuType": 40, - "Rack": 0, - "Slot": 1, - "Code": 0 - }, //提升机,接驳位 + //{ + // "IP": "192.168.2.30", + // "Port": 102, //102是默认端口 + // "CpuType": 40, + // "Rack": 0, + // "Slot": 1, + // "Code": 0 + //}, //提升机,接驳位 { "IP": "192.168.2.31", "Port": 102, //102是默认端口 diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml index 51b0e46..8f894db 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml @@ -1291,8 +1291,7 @@ - + diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs index 4171ff5..fd1cd03 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs @@ -345,7 +345,6 @@ namespace Khd.Core.Wpf.Form { status = LocationStatus.EmptyInStock; } - Visibility isFreeze = targetLocation.locationStatus == "1" ? Visibility.Collapsed : Visibility.Visible; locations.Add(new Location { LocationId = targetLocation.locationId, Code = targetLocation.locColumn.ToString(), Status = status, isFreeze = isFreeze }); }