master
2 years ago
parent cc396e6ac1
commit 2f62066c04

@ -14,7 +14,7 @@ namespace Khd.Core.Plc
/// <param name="address"> 写入地址 </param> /// <param name="address"> 写入地址 </param>
/// <param name="valueString"> 值 </param> /// <param name="valueString"> 值 </param>
/// <param name="len"> 长度 </param> /// <param name="len"> 长度 </param>
public static void WriteToPoint(this Plc.S7.Plc plc, string address, string? valueString, string? len) public static void WriteToPoint(this Plc.S7.Plc plc, string address, object? valueString, string? len)
{ {
if (len == null) if (len == null)
{ {
@ -24,8 +24,7 @@ namespace Khd.Core.Plc
{ {
throw new ArgumentException("StaticPlcHelper Ex valueString is null"); throw new ArgumentException("StaticPlcHelper Ex valueString is null");
} }
var value = GetValue(len, valueString); plc.Write(address, GetValue(len, valueString));
plc.Write(address, value);
} }
/// <summary> /// <summary>
@ -51,14 +50,13 @@ namespace Khd.Core.Plc
{ {
return res[res.IndexOf('J')..]; return res[res.IndexOf('J')..];
} }
else if(res.Contains("C")) else if(res.Contains('C'))
{ {
return res[res.IndexOf('C')..]; return res[res.IndexOf('C')..];
}else }else
{ {
return ""; return "";
} }
} }
@ -68,7 +66,7 @@ namespace Khd.Core.Plc
/// <param name="len">点位地址位长度</param> /// <param name="len">点位地址位长度</param>
/// <param name="value">写入数值</param> /// <param name="value">写入数值</param>
/// <returns></returns> /// <returns></returns>
public static object GetValue(string? len, string? value) public static object GetValue(string? len, object value)
{ {
if (len == "2") if (len == "2")
{ {
@ -90,7 +88,7 @@ namespace Khd.Core.Plc
{ {
return Convert.ToBoolean(value); return Convert.ToBoolean(value);
} }
return 0; throw new ArgumentException("StaticPlcHelper Ex len is not support");
} }
} }
} }

@ -1,4 +1,5 @@
using Khd.Core.EntityFramework; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs; using Khd.Core.Wcs.Wcs;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
@ -32,11 +33,11 @@ namespace Khd.Core.Wcs
public void Start() public void Start()
{ {
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
using var dbContextTransaction = dbContext.Database.BeginTransaction();
try try
{ {
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
//加载配置项 //加载配置项
//设置程序启动时清空点位的数据=>0为 Int16位 //设置程序启动时清空点位的数据=>0为 Int16位
QingKongDianWei = StaticPlcHelper.GetValue("2", "0"); QingKongDianWei = StaticPlcHelper.GetValue("2", "0");
@ -48,7 +49,7 @@ namespace Khd.Core.Wcs
StaticData.basePlcs = dbContext.BasePlc.ToList(); StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseEquip = dbContext.BaseEquip.ToList(); StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList(); StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
foreach (var plcConfig in StaticData.PlcConfigs) foreach (var plcConfig in StaticData.PlcConfigs)
{ {
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@ -57,7 +58,7 @@ namespace Khd.Core.Wcs
plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot);
try try
{ {
//plc.Open(); plc.Open();
Console.WriteLine(DateTime.Now + ":连接到PLC" + plcConfig.IP); Console.WriteLine(DateTime.Now + ":连接到PLC" + plcConfig.IP);
} }
catch catch
@ -69,13 +70,13 @@ namespace Khd.Core.Wcs
} }
//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();
////一楼提升机以及接驳位 //一楼提升机以及接驳位
//FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]); FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]);
//firstFloor.StartPoint(); firstFloor.StartPoint();
////二层接驳位 ////二层接驳位
//var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); //var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First();
@ -92,38 +93,39 @@ namespace Khd.Core.Wcs
//SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value); //SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value);
//secondFloorLine.StartPoint(); //secondFloorLine.StartPoint();
//三层接驳位 ////三层接驳位
var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); //var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First();
ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value); //ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
thirdFloorPoint.StartPoint(); //thirdFloorPoint.StartPoint();
////三层AGV ////三层AGV
//var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
//ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value); //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value);
//thirdFloorAGV.StartPoint(); //thirdFloorAGV.StartPoint();
////五层接驳位 //五层接驳位
//var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
//FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value); FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
//fifthFloorPoint.StartPoint(); fifthFloorPoint.StartPoint();
////五层CTU ////五层CTU
//var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); //var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
//FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value); //FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value);
//fiveFloorCTU.StartPoint(); //fiveFloorCTU.StartPoint();
////五层AGV //五层AGV
//var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value); FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value);
//fifthFloorAGV.StartPoint(); fifthFloorAGV.StartPoint();
//背负式Agv //背负式Agv
//var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
//FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value); FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value);
//fiveFloorBearAgv.StartPoint(); fiveFloorBearAgv.StartPoint();
} }
catch (Exception ex) catch (Exception ex)
{ {
dbContextTransaction.Rollback();
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
LogManager.Error(ex); LogManager.Error(ex);
} }

@ -32,18 +32,18 @@ namespace Khd.Core.Wcs.Wcs
////背负式Agv返库任务 ////背负式Agv返库任务
//var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic); //var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
//createBearAgvReturnThread.Start(); //createBearAgvReturnThread.Start();
////五楼半成品入库任务 //五楼半成品入库任务
//var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic); var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
//createFiveProductInTaskThread.Start(); createFiveProductInTaskThread.Start();
////五楼成品出库任务 //五楼成品出库任务
//var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic); var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
//createFiveProductTaskThread.Start(); createFiveProductTaskThread.Start();
////五楼CTU出库任务以及原材料出库任务 //五楼CTU出库任务以及原材料出库任务
//var createRawTaskThread = new Thread(CreateRawTaskLogic); var createRawTaskThread = new Thread(CreateRawTaskLogic);
//createRawTaskThread.Start(); createRawTaskThread.Start();
////五楼柜体拆分返库任务 //五楼柜体拆分返库任务
//var createRawInThread = new Thread(CreateRawInTaskLogic); var createRawInThread = new Thread(CreateRawInTaskLogic);
//createRawInThread.Start(); createRawInThread.Start();
////三楼去翻转机任务 ////三楼去翻转机任务
//var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic); //var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
//createThirdOutTaskThread.Start(); //createThirdOutTaskThread.Start();
@ -177,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs
try try
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t=>t.taskStatus<5).Any(); bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any();
if (!canCreate) if (!canCreate)
{ {
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
@ -485,8 +485,8 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.instockFlag == "0") .Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0") .Where(t => t.outstockFlag == "0")
.Where(t => t.warehouseId == 311) .Where(t => t.warehouseId == 311)
.OrderByDescending(t=>t.locRow) .OrderByDescending(t => t.locRow)
.ThenByDescending(t=>t.locColumn) .ThenByDescending(t => t.locColumn)
.ToList(); .ToList();
var bill = from a in wmsBaseLocations var bill = from a in wmsBaseLocations
from b in wmsRawStocks from b in wmsRawStocks
@ -541,55 +541,67 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault(); .Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode)) if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
{ {
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
.Where(t => t.locDeep == 1) if (wmsRawStock1 != null)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t=>t.locColumn>wmsBaseLocation.locColumn)
.OrderBy(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn < wmsBaseLocation.locColumn)
.OrderByDescending(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
var RemoveTask = new WcsTask() WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn > wmsBaseLocation.locColumn)
.OrderBy(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn < wmsBaseLocation.locColumn)
.OrderByDescending(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
objid = StaticData.SnowId.NextId(), var RemoveTask = new WcsTask()
taskType = 67, {
containerNo = fromBaseLocation.containerCode, objid = StaticData.SnowId.NextId(),
createBy = "WCS", taskType = 67,
createTime = DateTime.Now.AddSeconds(-10), containerNo = wmsRawStock1.palletInfoCode,
taskStatus = 0, createBy = "WCS",
currPointId = fromBaseLocation.locationId, createTime = DateTime.Now.AddSeconds(-10),
currPointNo = fromBaseLocation.locationCode, taskStatus = 0,
nextPointId = baseEquip.objid, currPointId = fromBaseLocation.locationId,
nextPointNo = baseEquip.equipNo, currPointNo = fromBaseLocation.locationCode,
endPointId = toLocation.locationId, nextPointId = baseEquip.objid,
endPointNo = toLocation.locationCode, nextPointNo = baseEquip.equipNo,
equipmentNo = baseEquip.equipNo, endPointId = toLocation.locationId,
useFlag = 1, endPointNo = toLocation.locationCode,
qty = 1 equipmentNo = baseEquip.equipNo,
}; useFlag = 1,
toLocation.locationStatus = "4"; qty = 1
toLocation.instockFlag = "1"; };
toLocation.updateBy = "WCS"; toLocation.locationStatus = "4";
toLocation.updateTime = DateTime.Now; toLocation.instockFlag = "1";
fromBaseLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
fromBaseLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
fromBaseLocation.outstockFlag = "1"; fromBaseLocation.updateBy = "WCS";
fromBaseLocation.locationStatus = "4"; fromBaseLocation.updateTime = DateTime.Now;
dbContext.Update(toLocation); fromBaseLocation.outstockFlag = "1";
dbContext.Update(fromBaseLocation); fromBaseLocation.locationStatus = "4";
dbContext.Add(RemoveTask); dbContext.Update(toLocation);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask); dbContext.Update(fromBaseLocation);
dbContext.Add(wcsTaskLog); dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
}
else
{
continue;
} }
} }
} }
@ -823,7 +835,7 @@ namespace Khd.Core.Wcs.Wcs
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode); MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
if (mesBasePalletInfo != null) if (mesBasePalletInfo != null)
{ {
if (location.locDeep == 1) if (location.locDeep == 1)
{ {
int? row = 0; int? row = 0;
@ -848,48 +860,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{ {
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
.Where(t => t.locDeep == 1) if (wmsProductStock != null)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
var RemoveTask = new WcsTask() WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
objid = StaticData.SnowId.NextId(), var RemoveTask = new WcsTask()
orderId = item.productOutstockId, {
taskType = 38, objid = StaticData.SnowId.NextId(),
containerNo = wmsBaseLocation.containerCode, orderId = item.productOutstockId,
createBy = "WCS", taskType = 38,
createTime = DateTime.Now.AddSeconds(-10), containerNo = wmsProductStock.palletInfoCode,
taskStatus = 0, createBy = "WCS",
materialId = item.productId, createTime = DateTime.Now.AddSeconds(-10),
currPointId = wmsBaseLocation.locationId, taskStatus = 0,
currPointNo = wmsBaseLocation.locationCode, materialId = item.productId,
nextPointId = agvEquip.objid, currPointId = wmsBaseLocation.locationId,
nextPointNo = agvEquip.equipNo, currPointNo = wmsBaseLocation.locationCode,
endPointId = toLocation.locationId, nextPointId = agvEquip.objid,
endPointNo = toLocation.locationCode, nextPointNo = agvEquip.equipNo,
equipmentNo = agvEquip.equipNo, endPointId = toLocation.locationId,
useFlag = 1, endPointNo = toLocation.locationCode,
qty = 1 equipmentNo = agvEquip.equipNo,
}; useFlag = 1,
toLocation.locationStatus = "4"; qty = 1
toLocation.instockFlag = "1"; };
toLocation.updateBy = "WCS"; toLocation.locationStatus = "4";
toLocation.updateTime = DateTime.Now; toLocation.instockFlag = "1";
wmsBaseLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.locationStatus = "4"; wmsBaseLocation.updateTime = DateTime.Now;
dbContext.Update(toLocation); wmsBaseLocation.outstockFlag = "1";
dbContext.Update(wmsBaseLocation); wmsBaseLocation.locationStatus = "4";
dbContext.Add(RemoveTask); dbContext.Update(toLocation);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask); dbContext.Update(wmsBaseLocation);
dbContext.Add(wcsTaskLog); dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
} }
else else
{ {
@ -897,7 +917,7 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
} }
WmsProductOutstockDetail detail = new() WmsProductOutstockDetail detail = new()
{ {
@ -920,7 +940,7 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId, orderId = item.productOutstockId,
taskType = 38, taskType = 38,
containerNo = location.containerCode, containerNo = stock.palletInfoCode,
createBy = "WCS", createBy = "WCS",
createTime = DateTime.Now, createTime = DateTime.Now,
taskStatus = 0, taskStatus = 0,
@ -1039,19 +1059,7 @@ namespace Khd.Core.Wcs.Wcs
location = b.a; location = b.a;
stock = b.b; stock = b.b;
WcsTask wcsTask; WcsTask wcsTask;
int qty = 0; stock.updateDate = DateTime.Now;
if (stock.totalAmount - stock.frozenAmount <= needNumber)
{
item.outstockQty += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now;
}
else
{
item.outstockQty += needNumber;
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode); MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
if (mesBasePalletInfo != null) if (mesBasePalletInfo != null)
{ {
@ -1095,7 +1103,10 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{ {
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
if (wmsProductStock != null)
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1) .Where(t => t.locDeep == 1)
.Where(t => t.activeFlag == "1") .Where(t => t.activeFlag == "1")
.Where(t => t.delFlag == "0") .Where(t => t.delFlag == "0")
@ -1104,45 +1115,50 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationStatus == "1") .Where(t => t.locationStatus == "1")
.Where(t => t.outstockFlag == "0") .Where(t => t.outstockFlag == "0")
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId) .Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode)) .Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault(); .FirstOrDefault();
if (toLocation != null) if (toLocation != null)
{
var RemoveTask = new WcsTask()
{ {
objid = StaticData.SnowId.NextId(), var RemoveTask = new WcsTask()
orderId = item.productOutstockId, {
taskType = 55, objid = StaticData.SnowId.NextId(),
containerNo = wmsBaseLocation.containerCode, orderId = item.productOutstockId,
createBy = "WCS", taskType = 55,
createTime = DateTime.Now.AddSeconds(-10), containerNo = wmsBaseLocation.containerCode,
taskStatus = 0, createBy = "WCS",
materialId = item.productId, createTime = DateTime.Now.AddSeconds(-10),
currPointId = wmsBaseLocation.locationId, taskStatus = 0,
currPointNo = wmsBaseLocation.locationCode, materialId = item.productId,
nextPointId = agvEquip.objid, currPointId = wmsBaseLocation.locationId,
nextPointNo = agvEquip.equipNo, currPointNo = wmsBaseLocation.locationCode,
endPointId = toLocation.locationId, nextPointId = agvEquip.objid,
endPointNo = toLocation.locationCode, nextPointNo = agvEquip.equipNo,
equipmentNo = agvEquip.equipNo, endPointId = toLocation.locationId,
useFlag = 1, endPointNo = toLocation.locationCode,
qty = qty equipmentNo = agvEquip.equipNo,
}; useFlag = 1,
toLocation.locationStatus = "4"; qty = 1
toLocation.instockFlag = "1"; };
toLocation.updateBy = "WCS"; toLocation.locationStatus = "4";
toLocation.updateTime = DateTime.Now; toLocation.instockFlag = "1";
wmsBaseLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.locationStatus = "4"; wmsBaseLocation.updateTime = DateTime.Now;
dbContext.Update(toLocation); wmsBaseLocation.outstockFlag = "1";
dbContext.Update(wmsBaseLocation); wmsBaseLocation.locationStatus = "4";
dbContext.Add(RemoveTask); dbContext.Update(toLocation);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask); dbContext.Update(wmsBaseLocation);
dbContext.Add(wcsTaskLog); dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
} }
else else
{ {
@ -1169,7 +1185,7 @@ namespace Khd.Core.Wcs.Wcs
endPointNo = endEquip.equipNo, endPointNo = endEquip.equipNo,
equipmentNo = agvEquip.equipNo, equipmentNo = agvEquip.equipNo,
useFlag = 1, useFlag = 1,
qty = qty qty = 1
}; };
location.outstockFlag = "1"; location.outstockFlag = "1";
location.locationStatus = "6"; location.locationStatus = "6";
@ -1182,10 +1198,6 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask); WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog1); dbContext.Add(wcsTaskLog1);
dbContext.SaveChanges(); dbContext.SaveChanges();
if (qty >= needNumber)
{
break;
}
break; break;
} }
} }
@ -1254,7 +1266,7 @@ namespace Khd.Core.Wcs.Wcs
foreach (var item in rawOutStock) foreach (var item in rawOutStock)
{ {
decimal? RealOutNumber = item.realOutstockAmount; decimal? RealOutNumber = item.realOutstockAmount;
var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode); var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode);
if (endEquip != null && endEquip.floorNo == 5) if (endEquip != null && endEquip.floorNo == 5)
{ {
lock (SystemData.outStockLock) lock (SystemData.outStockLock)
@ -1456,6 +1468,10 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20); BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
foreach (var b in bill) foreach (var b in bill)
{ {
if (needNumber <= 0)
{
break;
}
if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6) if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
{ {
continue; continue;
@ -1465,12 +1481,14 @@ namespace Khd.Core.Wcs.Wcs
int qty = 0; int qty = 0;
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出 if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{ {
needNumber-= stock.totalAmount - stock.frozenAmount;
RealOutNumber += stock.totalAmount - stock.frozenAmount; RealOutNumber += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount); qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now; stock.updateDate = DateTime.Now;
} }
else else
{ {
needNumber = 0;
RealOutNumber += needNumber; RealOutNumber += needNumber;
qty = Convert.ToInt32(needNumber); qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now; stock.updateDate = DateTime.Now;
@ -1516,141 +1534,6 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
#region 原逻辑
//foreach (var order in orderList)
//{
// if(tasks.Count >= 6)
// {
// break;
// }
// WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
// if (task == null)
// {
// var wmsRawStocks = rawStock
// .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId)
// .Select(t => t.palletInfoCode)
// .ToList();
// var wmsBaseLocations = dbContext.WmsBaseLocation
// .Where(t => t.activeFlag == "1")
// .Where(t => t.delFlag == "0")
// .Where(t => t.locationScrapType == "1")
// .Where(t => t.instockFlag == "0")
// .Where(t => t.outstockFlag == "0")
// .Where(t => t.warehouseId == order.warehouseId)
// .Where(t => wmsRawStocks.Contains(t.containerCode))
// .ToList();
// decimal? needNumber = order.outstockAmount - RealOutNumber;
// var bill = from a in wmsBaseLocations
// from b in rawStock
// where a.containerCode == b.palletInfoCode
// 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();
// }
// //做数量限制
// bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
// BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
// BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
// foreach (var b in bill)
// {
// if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())
// {
// continue;
// }
// item.executeStatus = "1";
// WmsBaseLocation location = b.a;
// WmsRawStock stock = b.b;
// int qty = 0;
// if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
// {
// RealOutNumber += stock.totalAmount - stock.frozenAmount;
// qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
// stock.updateDate = DateTime.Now;
// }
// else
// {
// RealOutNumber += needNumber;
// qty = Convert.ToInt32(needNumber);
// stock.updateDate = DateTime.Now;
// }
// WcsTask wcsTask = new WcsTask()
// {
// objid = StaticData.SnowId.NextId(),
// orderId = item.rawOutstockId,
// taskType = 30,
// containerNo = location.containerCode,
// createBy = "WCS",
// createTime = DateTime.Now,
// taskStatus = 0,
// materialId = item.materialId,
// currPointId = location.locationId,
// currPointNo = location.locationCode,
// nextPointId = ctuEquip.objid,
// nextPointNo = ctuEquip.equipNo,
// endPointId = lineEquip.objid,
// endPointNo = lineEquip.equipNo,
// equipmentNo = ctuEquip.equipNo,
// ud1 = location.locColumn,
// useFlag = 0,
// qty = qty
// };
// tasks.Add(wcsTask);
// MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
// if (mesBaseBarcodeInfo != null)
// {
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// {
// rawOutstockDetailId = StaticData.SnowId.NextId(),
// rawOutstockId = item.rawOutstockId,
// materialId = item.materialId,
// createDate = DateTime.Now,
// createBy = "WCS",
// taskCode = wcsTask.objid.ToString(),
// executeStatus = "1",
// locationCode = location.locationCode,
// outstockAmount = qty,
// planAmount = item.outstockAmount,
// warehouseId = item.warehouseId,
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// instockBatch = mesBaseBarcodeInfo.batchCode,
// stackAmount = qty,
// outstockPerson = "WCS",
// outstockTime = DateTime.Now,
// outstockWay = "2",
// materialProductionDate = mesBaseBarcodeInfo.productionDate
// };
// details.Add(wmsProductOutstockDetail);
// location.outstockFlag = "1";
// location.locationStatus = "6";
// location.updateBy = "WCS";
// location.updateTime = DateTime.Now;
// wcsOutstockLock.qty += 1;
// wcsOutstockLock.boxStatus = 1;
// dbContext.Update(wcsOutstockLock);
// dbContext.Update(location);
// dbContext.Add(wcsTask);
// dbContext.Update(stock);
// CreateSuccess = true;
// if (tasks.Count >= 6)
// {
// break;
// }
// }
// }
// }
//}
#endregion
} }
if (CreateSuccess) if (CreateSuccess)
{ {
@ -1804,48 +1687,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{ {
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
.Where(t => t.locDeep == 1) if (wmsRawStock != null)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
var RemoveTask = new WcsTask() WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{ {
objid = StaticData.SnowId.NextId(), var RemoveTask = new WcsTask()
orderId = item.rawOutstockId, {
taskType = 38, objid = StaticData.SnowId.NextId(),
containerNo = wmsBaseLocation.containerCode, orderId = item.rawOutstockId,
createBy = "WCS", taskType = 38,
createTime = DateTime.Now.AddSeconds(-10), containerNo = wmsRawStock.palletInfoCode,
taskStatus = 0, createBy = "WCS",
materialId = item.materialId, createTime = DateTime.Now.AddSeconds(-10),
currPointId = wmsBaseLocation.locationId, taskStatus = 0,
currPointNo = wmsBaseLocation.locationCode, materialId = item.materialId,
nextPointId = agvEquip.objid, currPointId = wmsBaseLocation.locationId,
nextPointNo = agvEquip.equipNo, currPointNo = wmsBaseLocation.locationCode,
endPointId = toLocation.locationId, nextPointId = agvEquip.objid,
endPointNo = toLocation.locationCode, nextPointNo = agvEquip.equipNo,
equipmentNo = agvEquip.equipNo, endPointId = toLocation.locationId,
useFlag = 1, endPointNo = toLocation.locationCode,
qty = qty equipmentNo = agvEquip.equipNo,
}; useFlag = 1,
toLocation.locationStatus = "4"; qty = qty
toLocation.instockFlag = "1"; };
toLocation.updateBy = "WCS"; toLocation.locationStatus = "4";
toLocation.updateTime = DateTime.Now; toLocation.instockFlag = "1";
wmsBaseLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.locationStatus = "4"; wmsBaseLocation.updateTime = DateTime.Now;
dbContext.Update(toLocation); wmsBaseLocation.outstockFlag = "1";
dbContext.Update(wmsBaseLocation); wmsBaseLocation.locationStatus = "4";
dbContext.Add(RemoveTask); dbContext.Update(toLocation);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask); dbContext.Update(wmsBaseLocation);
dbContext.Add(wcsTaskLog); dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
} }
else else
{ {

@ -158,12 +158,14 @@ namespace Khd.Core.Wcs.Wcs
bool hasTask = dbContext.WcsTask.Where(t => (t.currPointId == i || t.endPointId == i) && t.taskStatus >= 1 && t.nextPointId == 6).Any(); bool hasTask = dbContext.WcsTask.Where(t => (t.currPointId == i || t.endPointId == i) && t.taskStatus >= 1 && t.nextPointId == 6).Any();
if (!hasCmd || !hasTask) if (!hasCmd || !hasTask)
{ {
baseEquip.containerNo = null;
baseEquip.equipStatus = 0; baseEquip.equipStatus = 0;
dbContext.Update(baseEquip); dbContext.Update(baseEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
else else
{ {
baseEquip.containerNo = null;
baseEquip.equipStatus = 1; baseEquip.equipStatus = 1;
dbContext.Update(baseEquip); dbContext.Update(baseEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
@ -594,13 +596,13 @@ namespace Khd.Core.Wcs.Wcs
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress); var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
if (linesignal != null && Convert.ToInt32(linesignal) == 0) if (linesignal != null && Convert.ToInt32(linesignal) == 0)
{ {
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 1) if (clearPoint != null && Convert.ToBoolean(clearValue) == true)
{ {
Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令"); Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令");
LogManager.Info("提升机下发报警消除指令"); LogManager.Info("提升机下发报警消除指令");
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "0", clearPoint.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, false, clearPoint.plcpointLength.ToString());
} }
wcsTask.taskStatus = 4; wcsTask.taskStatus = 4;
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
@ -616,11 +618,11 @@ namespace Khd.Core.Wcs.Wcs
} }
else else
{ {
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 0) if (clearPoint != null && Convert.ToBoolean(clearValue)==false)
{ {
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "1", clearPoint.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, true, clearPoint.plcpointLength.ToString());
} }
} }
} }

@ -9,6 +9,7 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Transactions;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -101,21 +102,22 @@ namespace Khd.Core.Wcs.Wcs
{ {
reqCode = wcsCmd.objid.ToString(), reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List<Position> positionCodePath = new List<Position>
{
new ()
{ {
positionCode=wcsCmd.currPointNo, new ()
type="00" {
positionCode=wcsCmd.currPointNo,
type="00"
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
}, },
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
taskTyp = baseDictionary.dicValue, taskTyp = baseDictionary.dicValue,
ctnrTyp = "2" ctnrTyp = "2"
}; };
string message = JsonConvert.SerializeObject(agvTask); string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message); string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
@ -139,6 +141,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
} }
} }
} }
else if (item.taskType == 33)//原材料到背板安装 else if (item.taskType == 33)//原材料到背板安装
@ -543,8 +546,9 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼Agv下发继续任务成功" + message); LogManager.Info("五楼Agv下发继续任务成功" + message);
Console.WriteLine(DateTime.Now + ":五楼Agv继续任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); Console.WriteLine(DateTime.Now + ":五楼Agv继续任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
wcsCmd.cmdStatus = 4; wcsCmd.cmdStatus = 4;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); item.taskStatus = 4;
dbContext.Update(wcsCmd); dbContext.Update(wcsCmd);
dbContext.Update(item);
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
dbContext.SaveChanges(); dbContext.SaveChanges();
@ -552,11 +556,10 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (wcsCmd.cmdStatus == 5) else if (wcsCmd.cmdStatus == 5)
{ {
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
LogManager.Info("五楼Agv完成任务成功" + wcsCmd.ToJsonString()); LogManager.Info("五楼Agv完成任务成功" + wcsCmd.ToJsonString());
if (item.taskType == 66)//移库 if (item.taskType == 66)//移库
{ {
using var transaction = dbContext.Database.BeginTransaction();
try try
{ {
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault();
@ -592,12 +595,10 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Remove(item); 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 });
transaction.Commit();
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
catch (Exception ex) catch (Exception ex)
{ {
transaction.Rollback();
LogManager.Error(ex); LogManager.Error(ex);
} }
} }
@ -877,7 +878,7 @@ namespace Khd.Core.Wcs.Wcs
warehouseFloor = 5, warehouseFloor = 5,
stockType = "1", stockType = "1",
totalAmount = 1, totalAmount = 1,
saleOrderId = mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId, saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId,
safeFlag = mesBaseBarcodeInfo.safeFlag, safeFlag = mesBaseBarcodeInfo.safeFlag,
supplierId = mesBaseBarcodeInfo.manufacturerId, supplierId = mesBaseBarcodeInfo.manufacturerId,
materialId = mesBasePalletInfo.materialId, materialId = mesBasePalletInfo.materialId,

@ -140,11 +140,13 @@ namespace Khd.Core.Wcs.Wcs
{ {
LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 }); item.taskStatus = 5;
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 }); wcsCmd.cmdStatus = 5;
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 }); dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 }); dbContext.Update(wcsCmd);
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 });
} }
} }
else if (wcsCmd.cmdStatus == 7) else if (wcsCmd.cmdStatus == 7)
@ -170,15 +172,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsRawReturn); dbContext.Update(wmsRawReturn);
} }
} }
else if (item.taskType == 32)
{
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault();
if (wmsRawOutstock != null)
{
wmsRawOutstock.executeStatus = "2";
dbContext.Update(wmsRawOutstock);
}
}
dbContext.Remove(wcsCmd); dbContext.Remove(wcsCmd);
dbContext.Remove(item); dbContext.Remove(item);
dbContext.SaveChanges(); dbContext.SaveChanges();

@ -157,7 +157,7 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态 else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态
{ {
int? floor = 0; int? floor = 1;
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId); var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId);
if (wmsProductOutstock != null) if (wmsProductOutstock != null)
{ {

@ -185,7 +185,7 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 49)//小包出口-库位 else if (item.taskType == 49)//小包出口-库位
{ {
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
BaseEquip startEquip = dbContext.BaseEquip.First(t=>t.objid==item.currPointId); BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
WcsCmd wcsCmd = new WcsCmd() WcsCmd wcsCmd = new WcsCmd()
{ {
objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
@ -873,6 +873,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First(); var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode); WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
wmsProductOutstock.outstockQty ++;
if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty)
{ {
wmsProductOutstock.endTime = DateTime.Now; wmsProductOutstock.endTime = DateTime.Now;

@ -72,7 +72,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (wcsTask.taskType != 99) if (wcsTask.taskType != 99)
{ {
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料 if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)//小包入口要料
{ {
dbContext.WcsTask.Remove(wcsTask); dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask); WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
@ -96,7 +96,7 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid);
} }
else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0) else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)
{ {
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null) if (endEquip != null)

@ -43,11 +43,11 @@ namespace Khd.Core.Wcs.Wcs
//}; //};
//PlcHeartBeat30Thread.Start(); //PlcHeartBeat30Thread.Start();
//var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic) var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic)
//{ {
// IsBackground = true IsBackground = true
//}; };
//PlcHeartBeat31Thread.Start(); PlcHeartBeat31Thread.Start();
Console.WriteLine($"{DateTime.Now}: SystemTimer started"); Console.WriteLine($"{DateTime.Now}: SystemTimer started");
} }
@ -106,7 +106,7 @@ namespace Khd.Core.Wcs.Wcs
/// <param name="obj"></param> /// <param name="obj"></param>
private void PlcHeartBeat31Logic(object? obj) private void PlcHeartBeat31Logic(object? obj)
{ {
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat31"); BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
int heartBeatCount = 0; int heartBeatCount = 0;
while (true) while (true)
{ {
@ -194,13 +194,13 @@ namespace Khd.Core.Wcs.Wcs
{ {
HositerLogic(); HositerLogic();
//CtuLineLogic(); CtuLineLogic();
ThirdAgvLogic(); ThirdAgvLogic();
FiveAgvLogic(); FiveAgvLogic();
FiveBearAgvLogic(); FiveBearAgvLogic();
CtuCmdLogic(); CtuCmdLogic();
SecondAgvLogic(); SecondAgvLogic();
//SendTrayMessage(); SendTrayMessage();
UpdatePlcPointValue(); UpdatePlcPointValue();
} }
catch (Exception ex) catch (Exception ex)

@ -2902,7 +2902,8 @@ namespace Khd.Core.Wpf.Form
private void SelectOutBtn_Click(object sender, RoutedEventArgs e) private void SelectOutBtn_Click(object sender, RoutedEventArgs e)
{ {
SelectOutRawForm selectOutRawForm=new SelectOutRawForm(this._host);
selectOutRawForm.ShowDialog();
} }
} }
} }

@ -39,6 +39,7 @@ namespace Khd.Core.Wpf.TaskForm
dbContext.BaseEquip.Update(baseEquip); dbContext.BaseEquip.Update(baseEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
MessageBox.Show("保存成功!"); MessageBox.Show("保存成功!");
this.Close();
} }
} }

@ -16,14 +16,14 @@
"Slot": 1, "Slot": 1,
"Code": 0 "Code": 0
}, },
{ //{
"IP": "192.168.2.31", // "IP": "192.168.2.31",
"Port": 102, //102 // "Port": 102, //102
"CpuType": 40, // "CpuType": 40,
"Rack": 0, // "Rack": 0,
"Slot": 1, // "Slot": 1,
"Code": 1 // "Code": 1
}, //},
{ {
"IP": "192.168.2.220", "IP": "192.168.2.220",
"Port": 102, //102 "Port": 102, //102

Loading…
Cancel
Save