2 years ago
parent c20204a02f
commit 18f4c0a8a1

@ -394,6 +394,7 @@ namespace Khd.Core.Application
WcsTaskManual wcsTaskManual = new WcsTaskManual(); WcsTaskManual wcsTaskManual = new WcsTaskManual();
wcsTaskManual.taskType = 999; wcsTaskManual.taskType = 999;
wcsTaskManual.objid = _snowId.NextId(); wcsTaskManual.objid = _snowId.NextId();
wcsTaskManual.startPointNo = callMaterial.locationCode;
wcsTaskManual.orderId = Convert.ToInt64(callMaterial.rawOutstockId); wcsTaskManual.orderId = Convert.ToInt64(callMaterial.rawOutstockId);
_dbContext.Add(wcsTaskManual); _dbContext.Add(wcsTaskManual);
_dbContext.SaveChanges(); _dbContext.SaveChanges();

@ -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,
,
,
,
,
,
,
,
,
,
,
,
}
}

@ -3,6 +3,7 @@
public class CallMaterial public class CallMaterial
{ {
public string rawOutstockId { get; set; } public string rawOutstockId { get; set; }
public string locationCode { get; set; }
public string method { get; set; } public string method { get; set; }
} }

@ -41,8 +41,6 @@ namespace Khd.Core.Wcs
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
try try
{ {
//dbContext.WmsBaseLocation.Update(t => new Dictionary<string, WmsBaseLocation>() { { "1", new WmsBaseLocation { locationStatus="1" } } });
StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用 StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用
StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送 StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送
StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息 StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息
@ -67,11 +65,9 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc); StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
} }
} }
//创建定时器 //创建定时器
SystemTimer systemTimer = new(_host); SystemTimer systemTimer = new(_host);
systemTimer.Start(); systemTimer.Start();
//创建任务 //创建任务
CreateTaskByRecord createTaskByRecord = new(_host); CreateTaskByRecord createTaskByRecord = new(_host);
createTaskByRecord.StartPoint(); createTaskByRecord.StartPoint();
@ -125,12 +121,7 @@ namespace Khd.Core.Wcs
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
logger.Error(ex.Message + "\n" + ex.StackTrace); logger.Error(ex.Message + "\n" + ex.StackTrace);
} }
} }
} }
} }

@ -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.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs namespace Khd.Core.Wcs
{ {
public class SystemData public class SystemData
{ {
public readonly static int maxTray = 5; public readonly static int maxTray = 10;
private static long _serialNo { get; set; } = 1; 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<DmsRecordAlarmInfo>(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 SecondTaskLock = new();
public readonly static object ThirdTaskLock = new(); public readonly static object ThirdTaskLock = new();
public readonly static object FiveTaskLock = new(); public readonly static object FiveTaskLock = new();
} }
} }

@ -21,6 +21,7 @@ namespace Khd.Core.Wcs.Wcs
Thread OrderBakThread = new Thread(MonitorInLocatorPoint); Thread OrderBakThread = new Thread(MonitorInLocatorPoint);
OrderBakThread.Start(); OrderBakThread.Start();
} }
public void MonitorInLocatorPoint() public void MonitorInLocatorPoint()
{ {
// 创建一个定时器对象设置时间间隔为24小时 // 创建一个定时器对象设置时间间隔为24小时

@ -551,77 +551,77 @@ namespace Khd.Core.Wcs.Wcs
{ {
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
#region 原逻辑 #region 原逻辑
//if (baseEquip.emptyCount == (SystemData.maxTray / 2)) if (baseEquip.emptyCount == (SystemData.maxTray / 2))
//{ {
// var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2)); var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
// if (endEquip != null) if (endEquip != null)
// { {
// var wcsTask = new WcsTask() var wcsTask = new WcsTask()
// { {
// objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
// serialNo = SystemData.GetSerialNo(dbContext), serialNo = SystemData.GetSerialNo(dbContext),
// taskType = 40, taskType = 40,
// nextPointId = agvEquip.objid, nextPointId = agvEquip.objid,
// nextPointNo = agvEquip.equipNo, nextPointNo = agvEquip.equipNo,
// endPointId = baseEquip.objid, endPointId = baseEquip.objid,
// endPointNo = baseEquip.equipNo, endPointNo = baseEquip.equipNo,
// currPointId = endEquip.objid, currPointId = endEquip.objid,
// currPointNo = endEquip.equipNo, currPointNo = endEquip.equipNo,
// equipmentNo = agvEquip.equipNo, equipmentNo = agvEquip.equipNo,
// useFlag = 1, useFlag = 1,
// qty = 5, qty = 5,
// isEmpty = "1", isEmpty = "1",
// taskStatus = 0, taskStatus = 0,
// createBy = "WCS", createBy = "WCS",
// createTime = DateTime.Now, createTime = DateTime.Now,
// floorNo = 3, floorNo = 3,
// fromFloorNo = 3, fromFloorNo = 3,
// masterId = 0, masterId = 0,
// orderId = 0, orderId = 0,
// materialId = 0, materialId = 0,
// }; };
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
// dbContext.Add(wcsTask); dbContext.Add(wcsTask);
// dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
// dbContext.SaveChanges(); dbContext.SaveChanges();
// } }
// else else
// { {
// endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0); endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
// if (endEquip != null) if (endEquip != null)
// { {
// var wcsTask = new WcsTask() var wcsTask = new WcsTask()
// { {
// objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
// serialNo = SystemData.GetSerialNo(dbContext), serialNo = SystemData.GetSerialNo(dbContext),
// taskType = 43, taskType = 43,
// nextPointId = agvEquip.objid, nextPointId = agvEquip.objid,
// nextPointNo = agvEquip.equipNo, nextPointNo = agvEquip.equipNo,
// endPointId = endEquip.objid, endPointId = endEquip.objid,
// endPointNo = endEquip.equipNo, endPointNo = endEquip.equipNo,
// currPointId = baseEquip.objid, currPointId = baseEquip.objid,
// currPointNo = baseEquip.equipNo, currPointNo = baseEquip.equipNo,
// equipmentNo = agvEquip.equipNo, equipmentNo = agvEquip.equipNo,
// useFlag = 1, useFlag = 1,
// qty = 5, qty = 5,
// isEmpty = "1", isEmpty = "1",
// taskStatus = 0, taskStatus = 0,
// createBy = "WCS", createBy = "WCS",
// createTime = DateTime.Now, createTime = DateTime.Now,
// floorNo = 3, floorNo = 3,
// fromFloorNo = 3, fromFloorNo = 3,
// masterId = 0, masterId = 0,
// orderId = 0, orderId = 0,
// materialId = 0, materialId = 0,
// }; };
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
// dbContext.Add(wcsTask); dbContext.Add(wcsTask);
// dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
// dbContext.SaveChanges(); dbContext.SaveChanges();
// } }
// } }
//} }
//else else
#endregion #endregion
if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值 if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值
{ {
@ -936,8 +936,6 @@ namespace Khd.Core.Wcs.Wcs
{ {
WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();//调接口生成的任务 WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();//调接口生成的任务
if (wcsTaskManual != null) if (wcsTaskManual != null)
{ {
var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId); 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.locationScrapType == "1")
.Where(t => t.warehouseId == 311) .Where(t => t.warehouseId == 311)
.Where(t => t.locationStatus == "1").ToList(); .Where(t => t.locationStatus == "1").ToList();
var wmsBaseLocations = AllWmsBaseLocations var wmsBaseLocations = AllWmsBaseLocations
.Where(t => t.warehouseId == 311) .Where(t => t.warehouseId == 311)
.Where(t => wmsRawStockLocations.Contains(t.locationCode)) .Where(t => wmsRawStockLocations.Contains(t.locationCode))
.WhereIf(!string.IsNullOrEmpty(wcsTaskManual.startPointNo),t=>t.locationCode== wcsTaskManual.startPointNo)
.ToList(); .ToList();
var bill = from a in wmsBaseLocations var bill = from a in wmsBaseLocations
from b in wmsRawStocks from b in wmsRawStocks
@ -966,8 +966,18 @@ namespace Khd.Core.Wcs.Wcs
select new { a, b }; select new { a, b };
WmsBaseLocation? wmsBaseLocation = null; WmsBaseLocation? wmsBaseLocation = null;
WmsRawStock? wmsRawStock = 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<string>();
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 如果有需要优先投料的库位,则该库位优先投料 #region 如果有需要优先投料的库位,则该库位优先投料
List<string> PreferredOutsLocation = dbContext.WmsRawPreferredOut.Where(x => x.WarehouseId == 311).ToList().Select(x => x.LocationCode).ToList(); List<string> PreferredOutsLocation = dbContext.WmsRawPreferredOut.Where(x => x.WarehouseId == 311).ToList().Select(x => x.LocationCode).ToList();
if (PreferredOutsLocation != null && PreferredOutsLocation.Count > 0) if (PreferredOutsLocation != null && PreferredOutsLocation.Count > 0)
@ -977,7 +987,6 @@ namespace Khd.Core.Wcs.Wcs
#endregion #endregion
foreach (var item in bill) foreach (var item in bill)
{ {
// 目标库位 // 目标库位
@ -1177,6 +1186,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTask); dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
break;
} }
} }
} }
@ -1344,6 +1354,18 @@ namespace Khd.Core.Wcs.Wcs
select new { a, b }; select new { a, b };
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28); 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<string>();
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) foreach (var b in bill)
{ {
item.executeStatus = "1"; item.executeStatus = "1";
@ -1677,6 +1699,18 @@ namespace Khd.Core.Wcs.Wcs
WmsProductStock? stock = null; WmsProductStock? stock = null;
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1); 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<string>();
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) foreach (var b in bill)
{ {
item.executeStatus = "1"; item.executeStatus = "1";
@ -2336,6 +2370,18 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode); 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<string>();
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) foreach (var b in bill)
{ {
item.executeStatus = "1"; item.executeStatus = "1";

@ -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.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
@ -421,8 +422,10 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
else else
{ //TODO 物料未绑定仓库,添加报警 {
//TODO 物料未绑定仓库,添加报警
SystemData.InsertWaringLog(dbContext,WaringType.);
continue;
} }
} }
} }
@ -493,6 +496,7 @@ namespace Khd.Core.Wcs.Wcs
_logger.Error(ex.Message + "\n" + ex.StackTrace); _logger.Error(ex.Message + "\n" + ex.StackTrace);
} }
} }
SystemData.DeleteWaringLog(dbContext,WaringType.);
Thread.Sleep(3000); Thread.Sleep(3000);
} }
} }
@ -737,6 +741,7 @@ namespace Khd.Core.Wcs.Wcs
transaction.Commit(); transaction.Commit();
} }
} }
SystemData.DeleteWaringLog(dbContext, WaringType.);
break; break;
} }
else else
@ -764,6 +769,7 @@ namespace Khd.Core.Wcs.Wcs
} }
catch catch
{ {
} }
if (ex is PlcException) if (ex is PlcException)
{ {
@ -771,6 +777,7 @@ namespace Khd.Core.Wcs.Wcs
} }
else else
{ {
SystemData.InsertWaringLog(dbContext, WaringType., ex.Message);
_logger.Error(ex.Message + "\n" + ex.StackTrace); _logger.Error(ex.Message + "\n" + ex.StackTrace);
} }
} }

@ -1,4 +1,5 @@
using Khd.Core.Domain.Dto.TaskType; using Khd.Core.Domain.Dto.TaskType;
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;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;

@ -290,21 +290,21 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
if(wmsBaseLocation == null) //if(wmsBaseLocation == null)
{ // 找深库位有库存的库位对应的浅库位 //{ // 找深库位有库存的库位对应的浅库位
var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep==1).ToList(); // var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep==1).ToList();
foreach (var item in stockLocations) // foreach (var item in stockLocations)
{ // {
wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1") // wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1")
.Where(t => t.locDeep == 2 && t.locColumn == item.locColumn) // .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn)
.Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) // .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1)))
.FirstOrDefault(); // .FirstOrDefault();
if (wmsBaseLocation != null) // if (wmsBaseLocation != null)
{ // {
break; // break;
} // }
} // }
} //}
if(wmsBaseLocation == null) if(wmsBaseLocation == null)
{ // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常 { // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常
var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x=>x.locDeep).ToList(); var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x=>x.locDeep).ToList();

@ -84,7 +84,7 @@ namespace Khd.Core.Wcs.Wcs
if (wcsTask.taskType != 99)//不是人工任务 if (wcsTask.taskType != 99)//不是人工任务
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any(); 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);//删除原本的任务 dbContext.WcsTask.Remove(wcsTask);//删除原本的任务
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask); WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
@ -142,7 +142,7 @@ namespace Khd.Core.Wcs.Wcs
if (wcsTask.endPointId == 36)//目的地是小包入口 if (wcsTask.endPointId == 36)//目的地是小包入口
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any(); 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); dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask); WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);

@ -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.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
@ -74,9 +76,83 @@ namespace Khd.Core.Wcs.Wcs
// IsBackground = true // IsBackground = true
//}; //};
//AgvAlarmThread.Start(); //AgvAlarmThread.Start();
var locationThread = new Thread(LocationLogic)
{
Name = "LocationThread",
IsBackground = true
};
locationThread.Start();
Console.WriteLine($"{DateTime.Now}: SystemTimer started"); Console.WriteLine($"{DateTime.Now}: SystemTimer started");
} }
private void LocationLogic()
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
List<BasePlc> 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() private void AgvAlarmLogic()
{ {
using var scope = host.Services.CreateScope(); using var scope = host.Services.CreateScope();
@ -288,6 +364,7 @@ namespace Khd.Core.Wcs.Wcs
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray"); BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
int errorCount = 0; int errorCount = 0;
bool isOver = false;
while (true) while (true)
{ {
try try
@ -296,45 +373,47 @@ namespace Khd.Core.Wcs.Wcs
{ {
_logger.Error($"Plc220短线重连失败超过{errorCount}次"); _logger.Error($"Plc220短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault(); SystemData.InsertWaringLog(dbContext, WaringType.Plc, $"Plc220短线重连失败超过{errorCount}次");
if (dmsRecordAlarmTime == null) //var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault();
{ //if (dmsRecordAlarmTime == null)
var alarmTime = new DmsRecordAlarmTime //{
{ // var alarmTime = new DmsRecordAlarmTime
DeviceId = 15, // {
AlarmBeginTime = DateTime.Now, // DeviceId = 15,
AlarmReason = "Plc220短线重连失败", // AlarmBeginTime = DateTime.Now,
HandleSuggest = "检查Plc220网络连接", // AlarmReason = "Plc220短线重连失败",
AlarmRuleId = 4, // HandleSuggest = "检查Plc220网络连接",
ContinueTime = 10000, // AlarmRuleId = 4,
CreateBy = "WCS", // ContinueTime = 10000,
CreateTime = DateTime.Now, // CreateBy = "WCS",
}; // CreateTime = DateTime.Now,
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime); // };
dmsRecordAlarmInfo.AlarmStatus = "0"; // var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.NoticeStatus = "0"; // dmsRecordAlarmInfo.AlarmStatus = "0";
dbContext.Add(dmsRecordAlarmInfo); // dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.SaveChanges(); // dbContext.Add(dmsRecordAlarmInfo);
} // dbContext.SaveChanges();
//}
} }
StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress); StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress);
if (errorCount > 0) if (errorCount > 0 && isOver)
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault(); SystemData.DeleteWaringLog(dbContext, WaringType.Plc);
if (dmsRecordAlarmTime != null) //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 // dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
{ // dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
AlarmEndTime = DateTime.Now, // {
AlarmStatus = "1", // AlarmEndTime = DateTime.Now,
UpdateBy = "WCS", // AlarmStatus = "1",
UpdateTime = DateTime.Now // UpdateBy = "WCS",
}); // UpdateTime = DateTime.Now
dbContext.SaveChanges(); // });
errorCount = 0; // dbContext.SaveChanges();
} // errorCount = 0;
//}
} }
} }
catch 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] = 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(); StaticData.PlcDic[2].Open();
isOver = true;
} }
catch (Exception ex2) catch (Exception ex2)
{ {
errorCount++; errorCount++;
isOver = false;
_logger.Error("Plc短线重连失败" + ex2.Message); _logger.Error("Plc短线重连失败" + ex2.Message);
} }
} }
@ -363,6 +444,7 @@ namespace Khd.Core.Wcs.Wcs
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30"); BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30");
bool heartBeatCount = false; bool heartBeatCount = false;
bool isOver = false;
int errorCount = 0; int errorCount = 0;
while (true) while (true)
{ {
@ -372,47 +454,49 @@ namespace Khd.Core.Wcs.Wcs
{ {
_logger.Error($"Plc30短线重连失败超过{errorCount}次"); _logger.Error($"Plc30短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault(); SystemData.InsertWaringLog(dbContext, WaringType.Plc, $"Plc30短线重连失败超过{errorCount}次");
if (dmsRecordAlarmTime == null) //var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
{ //if (dmsRecordAlarmTime == null)
var alarmTime = new DmsRecordAlarmTime //{
{ // var alarmTime = new DmsRecordAlarmTime
DeviceId = 13, // {
AlarmBeginTime = DateTime.Now, // DeviceId = 13,
AlarmReason = "Plc30短线重连失败", // AlarmBeginTime = DateTime.Now,
HandleSuggest = "检查Plc30网络连接", // AlarmReason = "Plc30短线重连失败",
AlarmRuleId = 4, // HandleSuggest = "检查Plc30网络连接",
ContinueTime = 10000, // AlarmRuleId = 4,
CreateBy = "WCS", // ContinueTime = 10000,
CreateTime = DateTime.Now, // CreateBy = "WCS",
}; // CreateTime = DateTime.Now,
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime); // };
dmsRecordAlarmInfo.AlarmStatus = "0"; // var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.NoticeStatus = "0"; // dmsRecordAlarmInfo.AlarmStatus = "0";
dbContext.Add(dmsRecordAlarmTime); // dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.Add(dmsRecordAlarmInfo); // dbContext.Add(dmsRecordAlarmTime);
dbContext.SaveChanges(); // dbContext.Add(dmsRecordAlarmInfo);
} // dbContext.SaveChanges();
//}
} }
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) if (errorCount > 0 && isOver)
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault(); SystemData.DeleteWaringLog(dbContext, WaringType.Plc);
if (dmsRecordAlarmTime != null) //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 // dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
{ // dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
AlarmEndTime = DateTime.Now, // {
AlarmStatus = "1", // AlarmEndTime = DateTime.Now,
UpdateBy = "WCS", // AlarmStatus = "1",
UpdateTime = DateTime.Now // UpdateBy = "WCS",
}); // UpdateTime = DateTime.Now
dbContext.SaveChanges(); // });
errorCount = 0; // dbContext.SaveChanges();
} // errorCount = 0;
//}
} }
} }
catch 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] = 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(); StaticData.PlcDic[0].Open();
isOver = true;
} }
catch (Exception ex2) catch (Exception ex2)
{ {
errorCount++; errorCount++;
isOver = false;
_logger.Error("Plc短线重连失败" + ex2.Message); _logger.Error("Plc短线重连失败" + ex2.Message);
} }
} }
@ -441,6 +527,7 @@ namespace Khd.Core.Wcs.Wcs
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart"); BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
bool heartBeatCount = false; bool heartBeatCount = false;
bool isOver = false;
int errorCount = 0; int errorCount = 0;
while (true) while (true)
{ {
@ -450,46 +537,48 @@ namespace Khd.Core.Wcs.Wcs
{ {
_logger.Error($"Plc31短线重连失败超过{errorCount}次"); _logger.Error($"Plc31短线重连失败超过{errorCount}次");
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault(); SystemData.InsertWaringLog(dbContext, WaringType.U线Plc, $"Plc31短线重连失败超过{errorCount}次");
if (dmsRecordAlarmTime == null) //var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
{ //if (dmsRecordAlarmTime == null)
var alarmTime = new DmsRecordAlarmTime //{
{ // var alarmTime = new DmsRecordAlarmTime
DeviceId = 14, // {
AlarmBeginTime = DateTime.Now, // DeviceId = 14,
AlarmReason = "Plc31短线重连失败", // AlarmBeginTime = DateTime.Now,
HandleSuggest = "检查Plc31网络连接", // AlarmReason = "Plc31短线重连失败",
AlarmRuleId = 4, // HandleSuggest = "检查Plc31网络连接",
ContinueTime = 10000, // AlarmRuleId = 4,
CreateBy = "WCS", // ContinueTime = 10000,
CreateTime = DateTime.Now, // CreateBy = "WCS",
}; // CreateTime = DateTime.Now,
var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime); // };
dmsRecordAlarmInfo.AlarmStatus = "0"; // var dmsRecordAlarmInfo = CoreMapper.Map<DmsRecordAlarmInfo>(alarmTime);
dmsRecordAlarmInfo.NoticeStatus = "0"; // dmsRecordAlarmInfo.AlarmStatus = "0";
dbContext.Add(dmsRecordAlarmInfo); // dmsRecordAlarmInfo.NoticeStatus = "0";
dbContext.SaveChanges(); // dbContext.Add(dmsRecordAlarmInfo);
} // dbContext.SaveChanges();
//}
} }
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) if (errorCount > 0 && isOver)
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault(); SystemData.DeleteWaringLog(dbContext, WaringType.U线Plc);
if (dmsRecordAlarmTime != null) //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 // dbContext.DmsRecordAlarmTime.Remove(dmsRecordAlarmTime);
{ // dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == dmsRecordAlarmTime.AlarmId).Update(t => new DmsRecordAlarmInfo
AlarmEndTime = DateTime.Now, // {
AlarmStatus = "1", // AlarmEndTime = DateTime.Now,
UpdateBy = "WCS", // AlarmStatus = "1",
UpdateTime = DateTime.Now // UpdateBy = "WCS",
}); // UpdateTime = DateTime.Now
dbContext.SaveChanges(); // });
errorCount = 0; // dbContext.SaveChanges();
} // errorCount = 0;
//}
} }
} }
catch (Exception ex) 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] = 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(); StaticData.PlcDic[1].Open();
isOver = true;
} }
catch (Exception ex2) catch (Exception ex2)
{ {
errorCount++; errorCount++;
isOver = false;
_logger.Error("Plc短线重连失败" + ex2.Message); _logger.Error("Plc短线重连失败" + ex2.Message);
} }
} }
@ -710,7 +801,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary> /// <summary>
/// 定时更新三楼AGV信息 /// 定时更新三楼AGV信息
/// </summary> /// </summary>
private void ThirdAgvLogic() public void ThirdAgvLogic()
{ {
try try
{ {
@ -755,7 +846,6 @@ namespace Khd.Core.Wcs.Wcs
StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, false, Agv3FLED.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, false, Agv3FLED.plcpointLength.ToString());
} }
} }
#endregion #endregion
} }
} }

@ -100,11 +100,12 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => DeepContainerCodes.Contains(t.palletInfoCode)) .Where(t => DeepContainerCodes.Contains(t.palletInfoCode))
.Where(t => t.warehouseId == 311).ToList(); .Where(t => t.warehouseId == 311).ToList();
if (wmsRawStocks.Count > 0) if (wmsRawStocks.Count > 0)
{ //优先找同销售订单的有库存的深库位对应的浅库位 {
//优先找同销售订单的有库存的深库位对应的浅库位
foreach (var wmsRawStock in wmsRawStocks) foreach (var wmsRawStock in wmsRawStocks)
{ {
// 深库位库存对用的Location信息 // 深库位库存对用的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") wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1")
.Where(t => t.locDeep == 2 && t.locColumn == deepStockLocation.locColumn) .Where(t => t.locDeep == 2 && t.locColumn == deepStockLocation.locColumn)
.Where(t => t.locRow == (deepStockLocation.locRow % 2 == 0 ? (deepStockLocation.locRow - 1) : (deepStockLocation.locRow + 1))) .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) //if (wmsBaseLocation == null)
{ // 找深库位有库存的库位对应的浅库位 //{
var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep == 1).ToList(); // // 找深库位有库存的库位对应的浅库位
foreach (var item in stockLocations) // 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) // wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1")
.Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1))) // .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn)
.FirstOrDefault(); // .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1)))
if (wmsBaseLocation != null) // .FirstOrDefault();
{ // if (wmsBaseLocation != null)
break; // {
} // break;
} // }
} // }
//}
if (wmsBaseLocation == null) if (wmsBaseLocation == null)
{ // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常 { // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常
var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList(); var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList();

@ -1,20 +1,20 @@
{ {
"ConnectionStrings": { "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=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=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,// "DeleteLogDays": 10,//
"PlcConfigs": [ "PlcConfigs": [
{ //{
"IP": "192.168.2.30", // "IP": "192.168.2.30",
"Port": 102, //102 // "Port": 102, //102
"CpuType": 40, // "CpuType": 40,
"Rack": 0, // "Rack": 0,
"Slot": 1, // "Slot": 1,
"Code": 0 // "Code": 0
}, // //}, //
{ {
"IP": "192.168.2.31", "IP": "192.168.2.31",
"Port": 102, //102 "Port": 102, //102

@ -1291,8 +1291,7 @@
<!-- 透明的正方形 --> <!-- 透明的正方形 -->
<Rectangle Width="50" Height="50" Fill="Transparent" Stroke="Black" StrokeThickness="1"/> <Rectangle Width="50" Height="50" Fill="Transparent" Stroke="Black" StrokeThickness="1"/>
<!-- 中间的红点 --> <!-- 中间的红点 -->
<Ellipse Width="10" Height="10" Fill="Red" <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="20" Canvas.Top="20" />
Canvas.Left="20" Canvas.Top="20" />
</Canvas> </Canvas>
<TextBlock Text=" 库位锁定" FontSize="30"/> <TextBlock Text=" 库位锁定" FontSize="30"/>

@ -345,7 +345,6 @@ namespace Khd.Core.Wpf.Form
{ {
status = LocationStatus.EmptyInStock; status = LocationStatus.EmptyInStock;
} }
Visibility isFreeze = targetLocation.locationStatus == "1" ? Visibility.Collapsed : Visibility.Visible; Visibility isFreeze = targetLocation.locationStatus == "1" ? Visibility.Collapsed : Visibility.Visible;
locations.Add(new Location { LocationId = targetLocation.locationId, Code = targetLocation.locColumn.ToString(), Status = status, isFreeze = isFreeze }); locations.Add(new Location { LocationId = targetLocation.locationId, Code = targetLocation.locColumn.ToString(), Status = status, isFreeze = isFreeze });
} }

Loading…
Cancel
Save