master
2 years ago
parent 13343b38e0
commit 702649c670

@ -93,5 +93,11 @@ namespace Khd.Core.Api.Controllers
LogManager.Info($"CallMaterial 接口收到消息: {callMaterial}"); LogManager.Info($"CallMaterial 接口收到消息: {callMaterial}");
return _application.CallMaterial(callMaterial); return _application.CallMaterial(callMaterial);
} }
[HttpPost("AgvTaskComplete")]
public ReponseMessage AGVTaskComplete()
{
return _application.AGVTaskComplete();
}
} }
} }

@ -31,5 +31,6 @@ namespace Khd.Core.Application.Interface
AgvCompeletedResponse TaskReturn(TaskReturn taskReturn); AgvCompeletedResponse TaskReturn(TaskReturn taskReturn);
ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto); ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto);
ReponseMessage CallMaterial(CallMaterial callMaterial); ReponseMessage CallMaterial(CallMaterial callMaterial);
ReponseMessage AGVTaskComplete();
} }
} }

@ -28,6 +28,7 @@ namespace Khd.Core.Application
.FirstOrDefault(); .FirstOrDefault();
return entity; return entity;
} }
public WcsTask Add(WcsTask model) public WcsTask Add(WcsTask model)
{ {
var entity = _dbContext.Add(model); var entity = _dbContext.Add(model);
@ -35,11 +36,13 @@ namespace Khd.Core.Application
return entity.Entity; return entity.Entity;
} }
public WcsTask Update(WcsTask model) public WcsTask Update(WcsTask model)
{ {
var list = _dbContext.WcsTask.Where(t => t.objid == model.objid).Update(a => model); var list = _dbContext.WcsTask.Where(t => t.objid == model.objid).Update(a => model);
return model; return model;
} }
/// <summary> /// <summary>
/// 接收agv接收任务通知接口 /// 接收agv接收任务通知接口
/// </summary> /// </summary>
@ -153,6 +156,7 @@ namespace Khd.Core.Application
return reponseagvCallbackDto; return reponseagvCallbackDto;
} }
/// <summary> /// <summary>
/// 入库完成 /// 入库完成
/// </summary> /// </summary>
@ -161,6 +165,7 @@ namespace Khd.Core.Application
{ {
return ""; return "";
} }
/// <summary> /// <summary>
/// 出库完成 /// 出库完成
/// </summary> /// </summary>
@ -184,7 +189,10 @@ namespace Khd.Core.Application
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode); BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
if (baseEquip != null) if (baseEquip != null)
{ {
var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).Where(t => t.cmdStatus == 5).FirstOrDefault(); var wcsCmd = _dbContext.WcsCmd
.Where(t => t.cmdType == 32 || t.cmdType == 48)
.Where(t => t.nextPointId == baseEquip.objid || t.currPointId == baseEquip.objid)
.FirstOrDefault();
if (wcsCmd != null) if (wcsCmd != null)
{ {
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId); WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId);
@ -192,7 +200,6 @@ namespace Khd.Core.Application
{ {
if (wcsTask.taskType != 48) if (wcsTask.taskType != 48)
{ {
wcsCmd.cmdStatus = 7; wcsCmd.cmdStatus = 7;
wcsTask.taskStatus = 7; wcsTask.taskStatus = 7;
_dbContext.WcsCmd.Update(wcsCmd); _dbContext.WcsCmd.Update(wcsCmd);
@ -205,7 +212,6 @@ namespace Khd.Core.Application
} }
else else
{ {
wcsCmd.cmdStatus = 4; wcsCmd.cmdStatus = 4;
wcsTask.taskStatus = 4; wcsTask.taskStatus = 4;
_dbContext.WcsCmd.Update(wcsCmd); _dbContext.WcsCmd.Update(wcsCmd);
@ -217,6 +223,11 @@ namespace Khd.Core.Application
agvCompeletedResponse.message = "成功"; agvCompeletedResponse.message = "成功";
} }
} }
else
{
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前任务";
}
} }
else else
{ {
@ -227,7 +238,7 @@ namespace Khd.Core.Application
else else
{ {
agvCompeletedResponse.code = "1"; agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前设备"; agvCompeletedResponse.message = "未找到当前工位";
} }
} }
catch (Exception ex) catch (Exception ex)
@ -277,6 +288,7 @@ namespace Khd.Core.Application
} }
return compeletedResponse; return compeletedResponse;
} }
/// <summary> /// <summary>
/// 柜体拆分区通知返库 /// 柜体拆分区通知返库
/// </summary> /// </summary>
@ -465,5 +477,32 @@ namespace Khd.Core.Application
} }
return reponseMessage; return reponseMessage;
} }
public ReponseMessage AGVTaskComplete()
{
ReponseMessage reponseMessage = new ReponseMessage();
try
{
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool hasTask = _dbContext.WcsTask.Where(t => t.taskType == 41).Any();
if (hasTask)
{
reponseMessage.code = "0";
reponseMessage.message = "成功";
}
else
{
reponseMessage.code = "1";
reponseMessage.message = "当前无任务";
}
}
catch (Exception ex)
{
reponseMessage.code = "1";
reponseMessage.message = ex.Message;
LogManager.Error(ex);
}
return reponseMessage;
}
} }
} }

@ -68,8 +68,8 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc); StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
} }
} }
SystemTimer systemTimer = new SystemTimer(_host); //SystemTimer systemTimer = new SystemTimer(_host);
systemTimer.Start(); //systemTimer.Start();
////创建任务 ////创建任务
//CreateTaskByRecord createTaskByRecord = new(_host); //CreateTaskByRecord createTaskByRecord = new(_host);
//createTaskByRecord.StartPoint(); //createTaskByRecord.StartPoint();

@ -227,6 +227,9 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
/// <summary>
/// 背负式Agv退库
/// </summary>
private void BackReturnTaskLogic() private void BackReturnTaskLogic()
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
@ -235,7 +238,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.taskType == 28).FirstOrDefault(); WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.taskType == 28).FirstOrDefault();
if(wcsTask != null) if (wcsTask != null)
{ {
WmsRawInstock? wmsRawInstock = dbContext.WmsRawInstock.Where(t => t.instockType == "2" && t.warehouseId == 511 && t.executeStatus == "0").FirstOrDefault(); WmsRawInstock? wmsRawInstock = dbContext.WmsRawInstock.Where(t => t.instockType == "2" && t.warehouseId == 511 && t.executeStatus == "0").FirstOrDefault();
if (wmsRawInstock != null) if (wmsRawInstock != null)
@ -247,15 +250,15 @@ namespace Khd.Core.Wcs.Wcs
WmsRawInstockDetail wmsRawInstockDetail = new WmsRawInstockDetail() WmsRawInstockDetail wmsRawInstockDetail = new WmsRawInstockDetail()
{ {
rawInstockDetailId = StaticData.SnowId.NextId(), rawInstockDetailId = StaticData.SnowId.NextId(),
rawInstockId=wmsRawInstock.rawInstockId, rawInstockId = wmsRawInstock.rawInstockId,
instockWay = "2", instockWay = "2",
activeFlag="1", activeFlag = "1",
stackAmount = 1, stackAmount = 1,
createBy = "WCS", createBy = "WCS",
createDate = DateTime.Now, createDate = DateTime.Now,
materialId = wmsRawInstock.materialId, materialId = wmsRawInstock.materialId,
instockAmount = 1, instockAmount = 1,
executeStatus="0", executeStatus = "0",
}; };
dbContext.Update(wmsRawInstock); dbContext.Update(wmsRawInstock);
dbContext.Update(wcsTask); dbContext.Update(wcsTask);
@ -868,7 +871,9 @@ namespace Khd.Core.Wcs.Wcs
{ {
var proStock = dbContext.WmsProductStock var proStock = dbContext.WmsProductStock
.Where(t => t.warehouseId == 231) .Where(t => t.warehouseId == 231)
.Where(t => t.activeFlag == "0").ToList(); .Where(t => t.activeFlag == "0")
.Where(t => t.totalAmount > t.frozenAmount)
.ToList();
var proOutStock = dbContext.WmsProductOutstock var proOutStock = dbContext.WmsProductOutstock
.Where(t => t.outstockQty < t.applyQty) .Where(t => t.outstockQty < t.applyQty)
.Where(t => t.auditStatus == "1") .Where(t => t.auditStatus == "1")
@ -878,9 +883,7 @@ namespace Khd.Core.Wcs.Wcs
//获取最早入库时间 //获取最早入库时间
foreach (var item in proOutStock) foreach (var item in proOutStock)
{ {
task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
if (!task)
{
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 2 && t.equipType == 1); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 2 && t.equipType == 1);
var wmsproStocks = proStock var wmsproStocks = proStock
.Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId) .Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
@ -910,16 +913,6 @@ namespace Khd.Core.Wcs.Wcs
from b in proStock from b in proStock
where a.containerCode == b.palletInfoCode where a.containerCode == b.palletInfoCode
select new { a, b }; select new { a, b };
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
{
bill = bill.OrderBy(t => t.a.locColumn).ToList();
}
else
{
bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
}
//做数量限制
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2); BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2);
@ -930,7 +923,7 @@ namespace Khd.Core.Wcs.Wcs
WmsProductStock stock = b.b; WmsProductStock stock = b.b;
WcsTask wcsTask; WcsTask wcsTask;
int qty = 0; int qty = 0;
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出 if (stock.totalAmount - stock.frozenAmount <= needNumber)
{ {
item.outstockQty += stock.totalAmount - stock.frozenAmount; item.outstockQty += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount); qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
@ -959,9 +952,9 @@ namespace Khd.Core.Wcs.Wcs
planAmount = 1, planAmount = 1,
productBatch = item.productBatch, productBatch = item.productBatch,
productOutstockDetailId = StaticData.SnowId.NextId(), productOutstockDetailId = StaticData.SnowId.NextId(),
productBarcode = mesBasePalletInfo.materialBarcode productBarcode = mesBasePalletInfo.materialBarcode,
}; };
if (location.locDeep == 1) if (location.locDeep == 1)//如果是深库位
{ {
int? row = 0; int? row = 0;
if (location.locRow % 2 == 1) if (location.locRow % 2 == 1)
@ -1071,7 +1064,6 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine(ex.Message + ex.StackTrace); Console.WriteLine(ex.Message + ex.StackTrace);

@ -92,7 +92,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
bool IsStart = false; //bool IsStart = false;
while (true) while (true)
{ {
try try

@ -207,6 +207,7 @@ namespace Khd.Core.Wcs.Wcs
FiveBearAgvLogic(dbContext); FiveBearAgvLogic(dbContext);
CtuCmdLogic(dbContext); CtuCmdLogic(dbContext);
SecondAgvLogic(dbContext); SecondAgvLogic(dbContext);
SendTrayMessage(dbContext);
UpdatePlcPointValue(dbContext); UpdatePlcPointValue(dbContext);
} }
catch (Exception ex) catch (Exception ex)
@ -230,10 +231,40 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
Thread.Sleep(5000); Thread.Sleep(1000);
} }
} }
private void SendTrayMessage(DefaultDbContext dbContext)
{
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40);
BasePlcpoint oneInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneIn");
BasePlcpoint oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut");
BasePlcpoint someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut");
BasePlcpoint someInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someIn");
BasePlc basePlc = StaticData.basePlcs.First(t => t.Name == "托盘库去向");
BasePlc basePlc2 = StaticData.basePlcs.First(t => t.Name == "托盘库数量");
string? value = "0";
if (StaticData.PlcDic[0].Read(oneInPoint.plcpointAddress)?.ToString() == "1")
{
value = "1";
}
else if (StaticData.PlcDic[0].Read(oneOutPoint.plcpointAddress)?.ToString() == "1")
{
value = "2";
}
else if (StaticData.PlcDic[0].Read(someOutPoint.plcpointAddress)?.ToString() == "1")
{
value = "3";
}
else if (StaticData.PlcDic[0].Read(someInPoint.plcpointAddress)?.ToString() == "1")
{
value = "4";
}
StaticData.PlcDic[2].WriteToPoint(basePlc.Address, value, basePlc.type);
StaticData.PlcDic[2].WriteToPoint(basePlc2.Address, baseEquip.emptyCount.ToString(), basePlc2.type);
}
private void UpdatePlcPointValue(DefaultDbContext dbContext) private void UpdatePlcPointValue(DefaultDbContext dbContext)
{ {
try try
@ -364,7 +395,7 @@ namespace Khd.Core.Wcs.Wcs
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
basePlcs= StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList(); basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList();
cardStatus = reponse.data.First(t => t.RobotCode == "6011"); cardStatus = reponse.data.First(t => t.RobotCode == "6011");
cardStatus.DateNow = DateTime.Now; cardStatus.DateNow = DateTime.Now;
quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));

@ -579,10 +579,10 @@ namespace Khd.Core.Wcs.Wcs
}; };
dbContext.Add(wmsRawStock); dbContext.Add(wmsRawStock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }

Loading…
Cancel
Save