From 2f62066c049b8bc6c88ed3a482526050aab8775f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com>
Date: Mon, 22 Jul 2024 08:52:06 +0800
Subject: [PATCH] 20240722
---
src/Khd.Core.Plc/StaticPlcHelper.cs | 12 +-
src/Khd.Core.Wcs/MainCentralControl.cs | 56 +-
src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 567 +++++++-----------
src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 14 +-
src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 33 +-
src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs | 19 +-
src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 2 +-
src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 3 +-
src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 4 +-
src/Khd.Core.Wcs/Wcs/SystemTimer.cs | 16 +-
src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 3 +-
.../TaskForm/SelectOutRawForm.xaml.cs | 1 +
src/Khd.Core.Wpf/appsettings.json | 16 +-
13 files changed, 318 insertions(+), 428 deletions(-)
diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs
index 1397482..98f67df 100644
--- a/src/Khd.Core.Plc/StaticPlcHelper.cs
+++ b/src/Khd.Core.Plc/StaticPlcHelper.cs
@@ -14,7 +14,7 @@ namespace Khd.Core.Plc
/// 写入地址
/// 值
/// 长度
- 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)
{
@@ -24,8 +24,7 @@ namespace Khd.Core.Plc
{
throw new ArgumentException("StaticPlcHelper Ex valueString is null");
}
- var value = GetValue(len, valueString);
- plc.Write(address, value);
+ plc.Write(address, GetValue(len, valueString));
}
///
@@ -51,14 +50,13 @@ namespace Khd.Core.Plc
{
return res[res.IndexOf('J')..];
}
- else if(res.Contains("C"))
+ else if(res.Contains('C'))
{
return res[res.IndexOf('C')..];
}else
{
return "";
}
-
}
@@ -68,7 +66,7 @@ namespace Khd.Core.Plc
/// 点位地址位长度
/// 写入数值
///
- public static object GetValue(string? len, string? value)
+ public static object GetValue(string? len, object value)
{
if (len == "2")
{
@@ -90,7 +88,7 @@ namespace Khd.Core.Plc
{
return Convert.ToBoolean(value);
}
- return 0;
+ throw new ArgumentException("StaticPlcHelper Ex len is not support");
}
}
}
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index 6efadfb..3114634 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -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.Wcs;
using Masuit.Tools.Logging;
@@ -32,11 +33,11 @@ namespace Khd.Core.Wcs
public void Start()
{
-
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ using var dbContextTransaction = dbContext.Database.BeginTransaction();
try
{
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
//加载配置项
//设置程序启动时清空点位的数据=>0为 Int16位
QingKongDianWei = StaticPlcHelper.GetValue("2", "0");
@@ -48,7 +49,7 @@ namespace Khd.Core.Wcs
StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
-
+
foreach (var plcConfig in StaticData.PlcConfigs)
{
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);
try
{
- //plc.Open();
+ plc.Open();
Console.WriteLine(DateTime.Now + ":连接到PLC:" + plcConfig.IP);
}
catch
@@ -69,13 +70,13 @@ namespace Khd.Core.Wcs
}
//SystemTimer systemTimer = new SystemTimer(_host);
//systemTimer.Start();
- ////创建任务
- //CreateTaskByRecord createTaskByRecord = new(_host);
- //createTaskByRecord.StartPoint();
+ //创建任务
+ CreateTaskByRecord createTaskByRecord = new(_host);
+ createTaskByRecord.StartPoint();
- ////一楼提升机以及接驳位
- //FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]);
- //firstFloor.StartPoint();
+ //一楼提升机以及接驳位
+ FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]);
+ firstFloor.StartPoint();
////二层接驳位
//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.StartPoint();
- //三层接驳位
- var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First();
- ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
- thirdFloorPoint.StartPoint();
+ ////三层接驳位
+ //var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First();
+ //ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
+ //thirdFloorPoint.StartPoint();
////三层AGV
//var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
//ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value);
//thirdFloorAGV.StartPoint();
- ////五层接驳位
- //var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
- //FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
- //fifthFloorPoint.StartPoint();
+ //五层接驳位
+ var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
+ FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
+ fifthFloorPoint.StartPoint();
////五层CTU
//var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
//FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value);
//fiveFloorCTU.StartPoint();
- ////五层AGV
- //var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
- //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value);
- //fifthFloorAGV.StartPoint();
+ //五层AGV
+ var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
+ FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value);
+ fifthFloorAGV.StartPoint();
//背负式Agv
- //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
- //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value);
- //fiveFloorBearAgv.StartPoint();
+ var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
+ FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value);
+ fiveFloorBearAgv.StartPoint();
}
catch (Exception ex)
{
+ dbContextTransaction.Rollback();
Console.WriteLine(ex.Message);
LogManager.Error(ex);
}
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index e0cc84d..11c7d34 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -32,18 +32,18 @@ namespace Khd.Core.Wcs.Wcs
////背负式Agv返库任务
//var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
//createBearAgvReturnThread.Start();
- ////五楼半成品入库任务
- //var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
- //createFiveProductInTaskThread.Start();
- ////五楼成品出库任务
- //var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
- //createFiveProductTaskThread.Start();
- ////五楼CTU出库任务以及原材料出库任务
- //var createRawTaskThread = new Thread(CreateRawTaskLogic);
- //createRawTaskThread.Start();
- ////五楼柜体拆分返库任务
- //var createRawInThread = new Thread(CreateRawInTaskLogic);
- //createRawInThread.Start();
+ //五楼半成品入库任务
+ var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
+ createFiveProductInTaskThread.Start();
+ //五楼成品出库任务
+ var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
+ createFiveProductTaskThread.Start();
+ //五楼CTU出库任务以及原材料出库任务
+ var createRawTaskThread = new Thread(CreateRawTaskLogic);
+ createRawTaskThread.Start();
+ //五楼柜体拆分返库任务
+ var createRawInThread = new Thread(CreateRawInTaskLogic);
+ createRawInThread.Start();
////三楼去翻转机任务
//var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
//createThirdOutTaskThread.Start();
@@ -177,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs
try
{
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)
{
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.outstockFlag == "0")
.Where(t => t.warehouseId == 311)
- .OrderByDescending(t=>t.locRow)
- .ThenByDescending(t=>t.locColumn)
+ .OrderByDescending(t => t.locRow)
+ .ThenByDescending(t => t.locColumn)
.ToList();
var bill = from a in wmsBaseLocations
from b in wmsRawStocks
@@ -541,55 +541,67 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
{
- 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)
+ WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
+ if (wmsRawStock1 != 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(),
- taskType = 67,
- containerNo = fromBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now.AddSeconds(-10),
- taskStatus = 0,
- currPointId = fromBaseLocation.locationId,
- currPointNo = fromBaseLocation.locationCode,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = toLocation.locationId,
- endPointNo = toLocation.locationCode,
- equipmentNo = baseEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- toLocation.locationStatus = "4";
- toLocation.instockFlag = "1";
- toLocation.updateBy = "WCS";
- toLocation.updateTime = DateTime.Now;
- fromBaseLocation.updateBy = "WCS";
- fromBaseLocation.updateTime = DateTime.Now;
- fromBaseLocation.outstockFlag = "1";
- fromBaseLocation.locationStatus = "4";
- dbContext.Update(toLocation);
- dbContext.Update(fromBaseLocation);
- dbContext.Add(RemoveTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
- dbContext.Add(wcsTaskLog);
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ taskType = 67,
+ containerNo = wmsRawStock1.palletInfoCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ currPointId = fromBaseLocation.locationId,
+ currPointNo = fromBaseLocation.locationCode,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = baseEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ fromBaseLocation.updateBy = "WCS";
+ fromBaseLocation.updateTime = DateTime.Now;
+ fromBaseLocation.outstockFlag = "1";
+ fromBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(fromBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(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);
if (mesBasePalletInfo != null)
{
-
+
if (location.locDeep == 1)
{
int? row = 0;
@@ -848,48 +860,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{
- 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)
+ WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
+ if (wmsProductStock != 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(),
- orderId = item.productOutstockId,
- taskType = 38,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now.AddSeconds(-10),
- taskStatus = 0,
- materialId = item.productId,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- nextPointId = agvEquip.objid,
- nextPointNo = agvEquip.equipNo,
- endPointId = toLocation.locationId,
- endPointNo = toLocation.locationCode,
- equipmentNo = agvEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- toLocation.locationStatus = "4";
- toLocation.instockFlag = "1";
- toLocation.updateBy = "WCS";
- toLocation.updateTime = DateTime.Now;
- wmsBaseLocation.updateBy = "WCS";
- wmsBaseLocation.updateTime = DateTime.Now;
- wmsBaseLocation.outstockFlag = "1";
- wmsBaseLocation.locationStatus = "4";
- dbContext.Update(toLocation);
- dbContext.Update(wmsBaseLocation);
- dbContext.Add(RemoveTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
- dbContext.Add(wcsTaskLog);
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 38,
+ containerNo = wmsProductStock.palletInfoCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
}
else
{
@@ -897,7 +917,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
-
+
}
WmsProductOutstockDetail detail = new()
{
@@ -920,7 +940,7 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 38,
- containerNo = location.containerCode,
+ containerNo = stock.palletInfoCode,
createBy = "WCS",
createTime = DateTime.Now,
taskStatus = 0,
@@ -1039,19 +1059,7 @@ namespace Khd.Core.Wcs.Wcs
location = b.a;
stock = b.b;
WcsTask wcsTask;
- int qty = 0;
- 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;
- }
+ stock.updateDate = DateTime.Now;
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
if (mesBasePalletInfo != null)
{
@@ -1095,7 +1103,10 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
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.activeFlag == "1")
.Where(t => t.delFlag == "0")
@@ -1104,45 +1115,50 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationStatus == "1")
.Where(t => t.outstockFlag == "0")
.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()
+ 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(),
- orderId = item.productOutstockId,
- taskType = 55,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now.AddSeconds(-10),
- taskStatus = 0,
- materialId = item.productId,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- nextPointId = agvEquip.objid,
- nextPointNo = agvEquip.equipNo,
- endPointId = toLocation.locationId,
- endPointNo = toLocation.locationCode,
- equipmentNo = agvEquip.equipNo,
- useFlag = 1,
- qty = qty
- };
- toLocation.locationStatus = "4";
- toLocation.instockFlag = "1";
- toLocation.updateBy = "WCS";
- toLocation.updateTime = DateTime.Now;
- wmsBaseLocation.updateBy = "WCS";
- wmsBaseLocation.updateTime = DateTime.Now;
- wmsBaseLocation.outstockFlag = "1";
- wmsBaseLocation.locationStatus = "4";
- dbContext.Update(toLocation);
- dbContext.Update(wmsBaseLocation);
- dbContext.Add(RemoveTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
- dbContext.Add(wcsTaskLog);
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 55,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
}
else
{
@@ -1169,7 +1185,7 @@ namespace Khd.Core.Wcs.Wcs
endPointNo = endEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
- qty = qty
+ qty = 1
};
location.outstockFlag = "1";
location.locationStatus = "6";
@@ -1182,10 +1198,6 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog1 = CoreMapper.Map(wcsTask);
dbContext.Add(wcsTaskLog1);
dbContext.SaveChanges();
- if (qty >= needNumber)
- {
- break;
- }
break;
}
}
@@ -1254,7 +1266,7 @@ namespace Khd.Core.Wcs.Wcs
foreach (var item in rawOutStock)
{
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)
{
lock (SystemData.outStockLock)
@@ -1456,6 +1468,10 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
foreach (var b in bill)
{
+ if (needNumber <= 0)
+ {
+ break;
+ }
if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
{
continue;
@@ -1465,12 +1481,14 @@ namespace Khd.Core.Wcs.Wcs
int qty = 0;
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
+ needNumber-= stock.totalAmount - stock.frozenAmount;
RealOutNumber += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now;
}
else
{
+ needNumber = 0;
RealOutNumber += needNumber;
qty = Convert.ToInt32(needNumber);
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)
{
@@ -1804,48 +1687,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{
- 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)
+ WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
+ if (wmsRawStock != 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(),
- orderId = item.rawOutstockId,
- taskType = 38,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now.AddSeconds(-10),
- taskStatus = 0,
- materialId = item.materialId,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- nextPointId = agvEquip.objid,
- nextPointNo = agvEquip.equipNo,
- endPointId = toLocation.locationId,
- endPointNo = toLocation.locationCode,
- equipmentNo = agvEquip.equipNo,
- useFlag = 1,
- qty = qty
- };
- toLocation.locationStatus = "4";
- toLocation.instockFlag = "1";
- toLocation.updateBy = "WCS";
- toLocation.updateTime = DateTime.Now;
- wmsBaseLocation.updateBy = "WCS";
- wmsBaseLocation.updateTime = DateTime.Now;
- wmsBaseLocation.outstockFlag = "1";
- wmsBaseLocation.locationStatus = "4";
- dbContext.Update(toLocation);
- dbContext.Update(wmsBaseLocation);
- dbContext.Add(RemoveTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
- dbContext.Add(wcsTaskLog);
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.rawOutstockId,
+ taskType = 38,
+ containerNo = wmsRawStock.palletInfoCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.materialId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
}
else
{
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index 1fcbd6d..8deecdf 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -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();
if (!hasCmd || !hasTask)
{
+ baseEquip.containerNo = null;
baseEquip.equipStatus = 0;
dbContext.Update(baseEquip);
dbContext.SaveChanges();
}
else
{
+ baseEquip.containerNo = null;
baseEquip.equipStatus = 1;
dbContext.Update(baseEquip);
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);
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);
- if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 1)
+ if (clearPoint != null && Convert.ToBoolean(clearValue) == true)
{
Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令");
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.updateBy = "提升机线程";
@@ -616,11 +618,11 @@ namespace Khd.Core.Wcs.Wcs
}
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);
- 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());
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index 767ca68..ed25ad7 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -9,6 +9,7 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
+using System.Transactions;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -101,21 +102,22 @@ namespace Khd.Core.Wcs.Wcs
{
reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List
- {
- new ()
{
- positionCode=wcsCmd.currPointNo,
- type="00"
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
},
- new ()
- {
- positionCode=wcsCmd.nextPointNo,
- type="00"
- }
- },
taskTyp = baseDictionary.dicValue,
ctnrTyp = "2"
};
+
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject(result);
@@ -139,6 +141,7 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
+
}
}
else if (item.taskType == 33)//原材料到背板安装
@@ -543,8 +546,9 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼Agv下发继续任务成功:" + message);
Console.WriteLine(DateTime.Now + ":五楼Agv继续任务:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
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(item);
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.SaveChanges();
@@ -552,11 +556,10 @@ namespace Khd.Core.Wcs.Wcs
}
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());
if (item.taskType == 66)//移库
{
- using var transaction = dbContext.Database.BeginTransaction();
try
{
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault();
@@ -592,12 +595,10 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Remove(item);
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 });
- transaction.Commit();
dbContext.SaveChanges();
}
catch (Exception ex)
{
- transaction.Rollback();
LogManager.Error(ex);
}
}
@@ -877,7 +878,7 @@ namespace Khd.Core.Wcs.Wcs
warehouseFloor = 5,
stockType = "1",
totalAmount = 1,
- saleOrderId = mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId,
+ saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId,
safeFlag = mesBaseBarcodeInfo.safeFlag,
supplierId = mesBaseBarcodeInfo.manufacturerId,
materialId = mesBasePalletInfo.materialId,
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
index 35170f7..f4c2db5 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
@@ -140,11 +140,13 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 });
- dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 });
- dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 });
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 });
+ item.taskStatus = 5;
+ wcsCmd.cmdStatus = 5;
+ dbContext.Update(item);
+ dbContext.Update(wcsCmd);
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)
@@ -170,15 +172,6 @@ namespace Khd.Core.Wcs.Wcs
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(item);
dbContext.SaveChanges();
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index d89002e..b3182bd 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -157,7 +157,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态
{
- int? floor = 0;
+ int? floor = 1;
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId);
if (wmsProductOutstock != null)
{
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index e7a7c16..0d4a0c4 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -185,7 +185,7 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 49)//小包出口-库位
{
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()
{
objid = StaticData.SnowId.NextId(),
@@ -873,6 +873,7 @@ namespace Khd.Core.Wcs.Wcs
{
var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
+ wmsProductOutstock.outstockQty ++;
if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty)
{
wmsProductOutstock.endTime = DateTime.Now;
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
index 311b3d5..64faf36 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
@@ -72,7 +72,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.taskType != 99)
{
- if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料
+ if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)//小包入口要料
{
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
@@ -96,7 +96,7 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + 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);
if (endEquip != null)
diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
index c08e152..7dad077 100644
--- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
+++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
@@ -43,11 +43,11 @@ namespace Khd.Core.Wcs.Wcs
//};
//PlcHeartBeat30Thread.Start();
- //var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic)
- //{
- // IsBackground = true
- //};
- //PlcHeartBeat31Thread.Start();
+ var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic)
+ {
+ IsBackground = true
+ };
+ PlcHeartBeat31Thread.Start();
Console.WriteLine($"{DateTime.Now}: SystemTimer started");
}
@@ -106,7 +106,7 @@ namespace Khd.Core.Wcs.Wcs
///
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;
while (true)
{
@@ -194,13 +194,13 @@ namespace Khd.Core.Wcs.Wcs
{
HositerLogic();
- //CtuLineLogic();
+ CtuLineLogic();
ThirdAgvLogic();
FiveAgvLogic();
FiveBearAgvLogic();
CtuCmdLogic();
SecondAgvLogic();
- //SendTrayMessage();
+ SendTrayMessage();
UpdatePlcPointValue();
}
catch (Exception ex)
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
index 4e521cf..b927399 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
@@ -2902,7 +2902,8 @@ namespace Khd.Core.Wpf.Form
private void SelectOutBtn_Click(object sender, RoutedEventArgs e)
{
-
+ SelectOutRawForm selectOutRawForm=new SelectOutRawForm(this._host);
+ selectOutRawForm.ShowDialog();
}
}
}
diff --git a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
index da0599d..8cfce5c 100644
--- a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
@@ -39,6 +39,7 @@ namespace Khd.Core.Wpf.TaskForm
dbContext.BaseEquip.Update(baseEquip);
dbContext.SaveChanges();
MessageBox.Show("保存成功!");
+ this.Close();
}
}
diff --git a/src/Khd.Core.Wpf/appsettings.json b/src/Khd.Core.Wpf/appsettings.json
index b545c56..b77c2e9 100644
--- a/src/Khd.Core.Wpf/appsettings.json
+++ b/src/Khd.Core.Wpf/appsettings.json
@@ -16,14 +16,14 @@
"Slot": 1,
"Code": 0
},
- {
- "IP": "192.168.2.31",
- "Port": 102, //102是默认端口
- "CpuType": 40,
- "Rack": 0,
- "Slot": 1,
- "Code": 1
- },
+ //{
+ // "IP": "192.168.2.31",
+ // "Port": 102, //102是默认端口
+ // "CpuType": 40,
+ // "Rack": 0,
+ // "Slot": 1,
+ // "Code": 1
+ //},
{
"IP": "192.168.2.220",
"Port": 102, //102是默认端口