diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs
index 3ec2355..eb34f6a 100644
--- a/src/Khd.Core.Application/WcsTaskApplication.cs
+++ b/src/Khd.Core.Application/WcsTaskApplication.cs
@@ -5,6 +5,7 @@ using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Masuit.Tools;
using Masuit.Tools.Logging;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using System;
@@ -55,7 +56,7 @@ namespace Khd.Core.Application
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode);
if (wcsTask != null)
{
@@ -64,7 +65,7 @@ namespace Khd.Core.Application
if (agvCallbackDto.method.ToLower() == "start")
{
wcsTask.taskStatus = 2;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -73,7 +74,7 @@ namespace Khd.Core.Application
if (agvCallbackDto.method.ToLower() == "con")
{
wcsTask.taskStatus = 4;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -84,7 +85,7 @@ namespace Khd.Core.Application
{
wcsTask.taskStatus = 3;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -97,7 +98,7 @@ namespace Khd.Core.Application
{
wcsTask.taskStatus = 5;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -106,7 +107,7 @@ namespace Khd.Core.Application
else
{
wcsTask.taskStatus = 6;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -160,7 +161,7 @@ namespace Khd.Core.Application
AgvCompeletedResponse agvCompeletedResponse = new AgvCompeletedResponse();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
if (baseEquip != null)
{
@@ -174,7 +175,7 @@ namespace Khd.Core.Application
if (wcsTask.taskType != 48 && wcsTask.taskStatus != 0)
{
wcsTask.taskStatus = 7;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
_dbContext.SaveChanges();
agvCompeletedResponse.code = "0";
@@ -184,7 +185,7 @@ namespace Khd.Core.Application
else if (wcsTask.taskStatus != 0)
{
wcsTask.taskStatus = 4;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
_dbContext.SaveChanges();
agvCompeletedResponse.code = "0";
@@ -227,7 +228,7 @@ namespace Khd.Core.Application
AgvCompeletedResponse compeletedResponse = new AgvCompeletedResponse();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
var wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 47)
.Where(t => t.materialId == taskContinue.materialId)
@@ -235,7 +236,7 @@ namespace Khd.Core.Application
if (wcsTask != null)
{
wcsTask.useFlag = 1;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 });
_dbContext.SaveChanges();
compeletedResponse.code = "0";
@@ -266,7 +267,7 @@ namespace Khd.Core.Application
AgvCompeletedResponse compeletedResponse = new AgvCompeletedResponse();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
WcsTask wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 28)
.Where(t => t.endPointNo == taskReturn.endStationCode)
@@ -274,7 +275,7 @@ namespace Khd.Core.Application
if (wcsTask != null)
{
wcsTask.useFlag = 1;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTask { useFlag = 1 });
_dbContext.SaveChanges();
compeletedResponse.code = "0";
@@ -300,8 +301,7 @@ namespace Khd.Core.Application
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
-
+ _dbContext.ChangeTracker.Clear();
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode);
if (wcsTask != null)
{
@@ -310,7 +310,7 @@ namespace Khd.Core.Application
if (agvCallbackDto.method.ToLower() == "start")
{
wcsTask.taskStatus = 2;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -319,7 +319,7 @@ namespace Khd.Core.Application
if (agvCallbackDto.method.ToLower() == "con")
{
wcsTask.taskStatus = 4;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -331,7 +331,7 @@ namespace Khd.Core.Application
if (wcsTask.taskStatus > 3)
{
wcsTask.taskStatus = 5;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -340,7 +340,7 @@ namespace Khd.Core.Application
else
{
wcsTask.taskStatus = 3;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -351,7 +351,7 @@ namespace Khd.Core.Application
if (agvCallbackDto.method.ToLower() == "end")
{
wcsTask.taskStatus = 7;
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
@@ -376,7 +376,7 @@ namespace Khd.Core.Application
ReponseMessage reponseMessage = new ReponseMessage();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
WmsRawOutstock wmsRawOutstock = _dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == Convert.ToInt64(callMaterial.rawOutstockId));
if (wmsRawOutstock != null)
{
@@ -434,7 +434,7 @@ namespace Khd.Core.Application
ReponseMessage reponseMessage = new ReponseMessage();
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
bool hasTask = _dbContext.WcsTask.Where(t => t.taskType == 41).Any();
if (!hasTask)
{
@@ -504,7 +504,7 @@ namespace Khd.Core.Application
{
try
{
- _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ _dbContext.ChangeTracker.Clear();
var baseEquip = _dbContext.BaseEquip.FirstOrDefault(x => x.objid == 11);
var executeTask = new
{
diff --git a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
index 8fa2dec..b588c47 100644
--- a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
+++ b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
@@ -44,6 +44,7 @@
+
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index 0490385..4759f26 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -46,7 +46,6 @@ namespace Khd.Core.Wcs
StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();//字典表,Agv任务模板
StaticData.DmsBaseAlarmRuleList = dbContext.DmsBaseAlarmRule.ToList();
-
foreach (var plcConfig in StaticData.PlcConfigs)
{
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@@ -122,6 +121,6 @@ namespace Khd.Core.Wcs
logger.Error(ex.Message + "\n" + ex.StackTrace);
}
}
-
+
}
}
diff --git a/src/Khd.Core.Wcs/Program.cs b/src/Khd.Core.Wcs/Program.cs
index b00d3c4..444d5e7 100644
--- a/src/Khd.Core.Wcs/Program.cs
+++ b/src/Khd.Core.Wcs/Program.cs
@@ -98,6 +98,6 @@ internal class Program
.ConfigureServices((_, services) =>
{
services.AddDbContext(options =>
- options.UseMySql(ConnectionStrings.ConnectionString, new MySqlServerVersion(new Version(8, 0, 31))), ServiceLifetime.Transient);
+ options.UseMySql(ConnectionStrings.ConnectionString, new MySqlServerVersion(new Version(8, 0, 31))), ServiceLifetime.Scoped);
});
}
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index 4547abf..cac3ba6 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -40,6 +40,11 @@ namespace Khd.Core.Wcs.Wcs
//createRemoveThread.Name = "CreateRemoveLogic";
//createRemoveThread.Start();
+ var moveThread = new Thread(MoveThreadLogic);
+ moveThread.IsBackground = true;
+ moveThread.Name = "MoveThreadLogic";
+ moveThread.Start();
+
// 叫空托盘 3-2楼
var createEmtpyThread = new Thread(CreateEmptyLoic);
createEmtpyThread.IsBackground = true;
@@ -99,6 +104,91 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info("出库任务监听启动成功");
}
+ private void MoveThreadLogic(object? obj)
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BaseEquip secondAgv = StaticData.BaseEquip.First(t => t.objid == 8);
+ BaseEquip thirdAgv = StaticData.BaseEquip.First(t => t.objid == 9);
+ BaseEquip fiveAgv = StaticData.BaseEquip.First(t => t.objid == 28);
+ List wareHouseIds = new List
+ {
+ 231,311,511,531
+ };
+ while (true)
+ {
+ try
+ {
+ dbContext.ChangeTracker.Clear();
+ List wmsMoves = dbContext.WmsMove.Where(t => t.AuditStatus == "1" && t.ExecuteStatus == "0")
+ .Where(t => t.OperationType == "1").Where(t => wareHouseIds.Contains(t.WarehouseId)).ToList();
+ foreach (var item in wmsMoves)
+ {
+ BaseEquip agvEquip;
+ int staticTask;
+ if (item.WarehouseId == 231)
+ {
+ agvEquip = secondAgv;
+ staticTask = StaticTaskType.SecondRemove;
+ }
+ else if (item.WarehouseId == 311)
+ {
+ agvEquip = thirdAgv;
+ staticTask = StaticTaskType.ThirdRemove;
+ }
+ else
+ {
+ agvEquip = fiveAgv;
+ staticTask = StaticTaskType.FiveRemove;
+ }
+ bool hasTask = dbContext.WcsTask.Where(t => t.useFlag == 1 && t.nextPointId == agvEquip.objid).Any();
+ if (!hasTask)
+ {
+ WmsBaseLocation? wmslocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.OriLocationCode);
+ WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.TargetLocationCode);
+ if (wmslocation != null && toLocation != null)
+ {
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.MoveId,
+ taskType = staticTask,
+ containerNo = wmslocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ currPointId = wmslocation.locationId,
+ currPointNo = wmslocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ SystemData.LockOutLocation(toLocation, dbContext);
+ SystemData.LockOutLocation(wmslocation, dbContext);
+ dbContext.Add(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ item.ExecuteStatus = "1";
+ item.BeginTime = DateTime.Now;
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ Console.WriteLine(DateTime.Now + $":创建移库任务成功:{item.OriLocationCode}--{item.TargetLocationCode}");
+ }
+ }
+ }
+ }
+ catch
+ {
+
+ }
+ Thread.Sleep(5000);
+ }
+ }
+
private void CreateEmptyLoic(object? obj)
{
using var scope = _host.Services.CreateScope();
@@ -109,28 +199,24 @@ namespace Khd.Core.Wcs.Wcs
try
{
bool create = false;
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var ids = dbContext.BaseEquip.Where(t => t.equipType == 20).Select(t => t.objid).ToList();
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == 2 || t.endPointId == 36 || ids.Contains(t.currPointId.Value)).Any();
if (!hasTask)
{
- int thirdTray = dbContext.BaseEquip
- .Where(t => t.equipType == 15)
- .Where(t => t.useFlag == 1)
- .Where(t => t.emptyCount == SystemData.maxTray).Count();
int thirdBTray = dbContext.BaseEquip
.Where(t => t.equipType == 15)
.Where(t => t.emptyCount > 0).Count();
List baseEquips = dbContext.BaseEquip.Where(t => t.useFlag == 1).Where(t => t.equipType == 20).ToList();
int emptyCount = baseEquips.Where(t => t.emptyCount == 0).Count();
- int maxCount = baseEquips.Where(t => t.emptyCount == SystemData.maxTray).Count();
- if (thirdTray > 0)
+ int emptyC = baseEquips.Where(t => t.emptyCount > 1).Count();
+ if (thirdBTray > 0)
{
- if (emptyCount > 2 && thirdTray >= 2)
+ if (emptyCount > 2 && thirdBTray >= 2)
{
create = true;
}
- if (emptyCount > 6 && thirdBTray >= 1)
+ if (emptyC <= 1 && emptyCount >= 1 && thirdBTray >= 1)
{
create = true;
}
@@ -197,7 +283,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var CanRemoveWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.locationStatus == "7").ToList();
List locationCodes = CanRemoveWmsBaseLocations.Select(t => t.locationCode).ToList();
List CanRemoveWmsProductStocks = dbContext.WmsProductStock.Where(t => locationCodes.Contains(t.locationCode)).ToList();
@@ -447,8 +533,8 @@ namespace Khd.Core.Wcs.Wcs
{
lock (SystemData.FiveTaskLock)
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- BaseEquip baseEquip = dbContext.BaseEquip.AsNoTracking().First(t => t.objid == 29);
+ dbContext.ChangeTracker.Clear();
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 29);
if (baseEquip.emptyCount == 1)
{
WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.nextPointId == 28).FirstOrDefault();
@@ -593,7 +679,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.useFlag == 1).Any();
if (!hasTask)
{
@@ -636,7 +722,7 @@ namespace Khd.Core.Wcs.Wcs
try
{
bool isCreate = false;
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9)
.Where(t => t.useFlag == 1)
.Where(t => t.taskStatus <= 6).Any();
@@ -846,7 +932,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (baseEquip.IsOut == 2 && !string.IsNullOrEmpty(baseEquip.endStationCode))
{
@@ -911,7 +997,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.useFlag == 1 && t.taskStatus <= 5).Any();
if (!task)
{
@@ -1017,7 +1103,7 @@ namespace Khd.Core.Wcs.Wcs
{
lock (SystemData.ThirdTaskLock)
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 9 && t.taskStatus <= 5).Any();
if (!task)
{
@@ -1325,7 +1411,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(baseEquip.endStationCode) && baseEquip.ud3 == "1")
@@ -1401,7 +1487,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5);
if (lineEquip.equipStatus == 0)
{
@@ -1742,7 +1828,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 2);
if (lineEquip.equipStatus == 0)
{
@@ -2023,7 +2109,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//原材料出库记录
var rawOutStock = dbContext.WmsRawOutstock
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index 9ec9bf7..453f72b 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -7,6 +7,7 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
@@ -187,7 +188,7 @@ namespace Khd.Core.Wcs.Wcs
_logger.Error(ex.Message + "\n" + ex.StackTrace);
}
}
-
+ Thread.Sleep(1000);
}
}
@@ -202,7 +203,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var linesignal = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress);
int taskCount = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.taskStatus > 0 && t.endPointId == 1).Count();
int firstFloorCount = dbContext.WcsTask.Where(t => t.currPointId == 1).Count();
@@ -285,7 +286,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());//上次查出1,不加这行,数据库实际2,查出1
+ dbContext.ChangeTracker.Clear();//上次查出1,不加这行,数据库实际2,查出1
var RFID001Value = StaticData.PlcDic[0].ReadRFID(this.RFID001.plcpointAddress); //一楼RFID 读
var linesignal01Value = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress); //到位信号 读
//正常读到plc值
@@ -523,7 +524,6 @@ namespace Khd.Core.Wcs.Wcs
var targetfloor06Value = StaticData.PlcDic[0].Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
var hoisterStatusValue = StaticData.PlcDic[0].Read(this.hoisterStatus.plcpointAddress); //提升机目的楼层 写
var reserialno06 = StaticData.PlcDic[0].Read(this.reserialno06.plcpointAddress); //反馈流水号
- _logger.Info($"MES开启?{mesCloseValue},提升机自动状态?{hoisterStatusValue},提升机流水号?{serialno06Value},提升机状态?{equipstate06Value},提升机货物到位状态?{hoisterTrayIn06Value},提升机当前楼层?{currentfloor06Value},提升机目的楼层?{targetfloor06Value},反馈流水号?{reserialno06}");
if (mesCloseValue != null && hoisterStatusValue != null && Convert.ToInt32(hoisterStatusValue) == 1 && Convert.ToInt32(mesCloseValue) == 0)
{
//正常读到plc值
@@ -532,7 +532,7 @@ namespace Khd.Core.Wcs.Wcs
//提升机空闲
if (Convert.ToInt32(equipstate06Value) == 0)
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01 && t.taskStatus < 5)
.OrderBy(t => t.ud1).OrderBy(t => t.createTime).ToList();
foreach (var wcsTask in wcsTasks)
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index 1d8ccf6..37d9566 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -9,6 +9,7 @@ using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Microsoft.AspNetCore.Razor.Language;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
@@ -54,7 +55,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.Where(t => t.IsDelete == 0 || t.IsDelete == null)
@@ -419,6 +420,7 @@ namespace Khd.Core.Wcs.Wcs
Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo);
_logger.Info("五楼Agv完成任务成功:" + item.ToJsonString());
using var dbContextTransaction = dbContext.Database.BeginTransaction();
+ WmsProductStock? wmsProductStock = null;
try
{
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
@@ -429,7 +431,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wmsRawStock == null)
{
- var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo);
+ wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo);
if (wmsProductStock != null)
{
wmsProductStock.locationCode = item.endPointNo;
@@ -466,32 +468,45 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
#region 插入移库记录
- WmsMove wmsMove = new WmsMove();
- wmsMove.MoveId = StaticData.SnowId.NextId();
- wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
- wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
- wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
- wmsMove.TargetLocationCode = toLocation.locationCode;
- wmsMove.InstockBatch = wmsRawStock.instockBatch;
- wmsMove.MaterialId = wmsRawStock.materialId;
- wmsMove.PlanAmount = 1;
- wmsMove.RealOutstockAmount = 1;
- wmsMove.RealInstockAmount = 1;
- wmsMove.OperationType = "3";
- wmsMove.MoveWay = "2";
- wmsMove.MoveType = "1";
- wmsMove.AuditStatus = "1";
- wmsMove.ExecuteStatus = "2";
- wmsMove.UpdateBy = "WCS";
- wmsMove.UpdateDate = DateTime.Now;
- wmsMove.BeginTime = DateTime.Now;
- wmsMove.EndTime = DateTime.Now;
-
+ var wmsMove = dbContext.WmsMove.Where(t => t.MoveId == item.orderId).FirstOrDefault();
+ if (wmsMove == null)
+ {
+ wmsMove = new WmsMove();
+ wmsMove.MoveId = StaticData.SnowId.NextId();
+ wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
+ wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
+ wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
+ wmsMove.TargetLocationCode = toLocation.locationCode;
+ wmsMove.InstockBatch = wmsRawStock == null ? wmsProductStock.productBatch : wmsRawStock.instockBatch;
+ wmsMove.MaterialId = wmsRawStock == null ? wmsProductStock.productId : wmsRawStock.materialId;
+ wmsMove.PlanAmount = 1;
+ wmsMove.RealOutstockAmount = 1;
+ wmsMove.RealInstockAmount = 1;
+ wmsMove.OperationType = "3";
+ wmsMove.MoveWay = "2";
+ wmsMove.MoveType = "1";
+ wmsMove.AuditStatus = "1";
+ wmsMove.ExecuteStatus = "2";
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.BeginTime = DateTime.Now;
+ wmsMove.EndTime = DateTime.Now;
+ dbContext.WmsMove.Add(wmsMove);
+ }
+ else
+ {
+ wmsMove.RealOutstockAmount += 1;
+ wmsMove.EndTime = DateTime.Now;
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.ExecuteStatus = "2";
+ dbContext.Update(wmsMove);
+ }
WmsMoveDetail wmsMoveDetail = new WmsMoveDetail();
wmsMoveDetail.MoveId = wmsMove.MoveId;
wmsMoveDetail.MaterialBarcode = wmsMove.InstockBatch;
wmsMoveDetail.InstockBatch = wmsMove.InstockBatch;
- wmsMoveDetail.MaterialId = (long)wmsRawStock.materialId;
+ wmsMoveDetail.MaterialId = wmsRawStock == null ? (long)wmsProductStock.productId : (long)wmsRawStock.materialId;
wmsMoveDetail.LocationCode = toLocation.locationCode;
wmsMoveDetail.PlanAmount = 1;
wmsMoveDetail.RealInstockAmount = 1;
@@ -503,7 +518,6 @@ namespace Khd.Core.Wcs.Wcs
wmsMoveDetail.UpdateBy = "WCS";
wmsMoveDetail.UpdateDate = DateTime.Now;
- dbContext.WmsMove.Add(wmsMove);
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
@@ -613,7 +627,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsBaseLocation);
dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
- dbContext.WcsTask.Remove(item);
+ dbContext.Remove(item);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
SystemData.SendPlcLocation(wmsBaseLocation);
@@ -673,7 +687,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(startEquip);
dbContext.Add(wmsProductStock);
dbContext.Update(wmsBaseLocation);
- dbContext.WcsTask.Remove(item);
+ dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.SaveChanges();
//}
@@ -847,7 +861,7 @@ namespace Khd.Core.Wcs.Wcs
// }
// if (wmsRawInstocks.Count > 0)
// {
- // dbContext.WmsRawInstock.AddRange(wmsRawInstocks);
+ // dbContext.AddRange(wmsRawInstocks);
// }
//}
//else
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
index edcf08e..0116820 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
@@ -49,7 +49,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var taskList = dbContext.WcsTask
.Where(t => t.IsDelete == 0 || t.IsDelete == null)
.Where(t => t.nextPointId == agvID)
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index ef6650d..92e3937 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -92,7 +92,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var rfid = StaticData.PlcDic[1].ReadRFID(LineRFID.plcpointAddress);
var isArrive = StaticData.PlcDic[1].Read(isarrive.plcpointAddress);
var receiveMaterial = StaticData.PlcDic[1].Read(ReceiveMaterial.plcpointAddress);
@@ -366,7 +366,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.Where(t => t.IsDelete == 0 || t.IsDelete == null)
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index 62cf2e1..a489512 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -6,6 +6,7 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
@@ -56,7 +57,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
index ef560e5..c411f0f 100644
--- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
@@ -46,7 +46,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index 9b899af..2325b59 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -6,6 +6,7 @@ using Khd.Core.Library;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
@@ -68,7 +69,7 @@ namespace Khd.Core.Wcs.Wcs
if (agvGetValue != null && Convert.ToInt32(agvGetValue) == 0)
{
// 信号消失,20s后执行相关操作
- Thread.Sleep(1000*20);
+ Thread.Sleep(1000 * 20);
// 取托盘确认信号DB4.DBX310.1写true
BasePlcpoint secondOutGetOverPoint = StaticData.BasePlcpointList.First(t => t.id == 71);
@@ -106,7 +107,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
@@ -591,13 +592,13 @@ namespace Khd.Core.Wcs.Wcs
// 开启线程监听2分钟小包出口光电信号,如果小包出口到位信号消失,即取托盘完成,发送信号通知线体
ListenForSignal(2);
-
+
}
}
-
-
+
+
}
else
{
@@ -616,7 +617,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
-
+
}
else if (item.taskStatus == 5)
@@ -634,8 +635,8 @@ namespace Khd.Core.Wcs.Wcs
var ConnectStatus2F = StaticData.PlcDic[2].Read(ConnectStatus2FPoint.plcpointAddress);//2F托盘库产线数据通讯情况
var PalletInIsHas2F = StaticData.PlcDic[2].Read(PalletInIsHas2FPoint.plcpointAddress);//2F托盘库入口上料光电
-
- if (agvPutValue !=null && ConnectStatus2F != null && PalletInIsHas2F !=null&& Convert.ToInt32(agvPutValue) == 1 && Convert.ToInt32(ConnectStatus2F) == 1 && Convert.ToInt32(PalletInIsHas2F) == 0)
+
+ if (agvPutValue != null && ConnectStatus2F != null && PalletInIsHas2F != null && Convert.ToInt32(agvPutValue) == 1 && Convert.ToInt32(ConnectStatus2F) == 1 && Convert.ToInt32(PalletInIsHas2F) == 0)
{
// 托盘库叫料信号,并且通讯正常,并且小包入口无料 ,才可放托盘
var agvTask = new RequestAGVTaskDto
@@ -653,7 +654,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
-
+
}
else if (item.taskStatus == 7)
{
@@ -682,7 +683,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.containerCode = item.containerNo;
WmsProductStock wmsProductStock = new WmsProductStock()
{
-
+
productId = mesBasePalletInfo.materialId,
activeFlag = "1",
frozenAmount = 0,
@@ -757,7 +758,7 @@ namespace Khd.Core.Wcs.Wcs
WmsProductOutstock? wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
if (wmsProductOutstock != null)
{
-
+
var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
@@ -783,7 +784,7 @@ namespace Khd.Core.Wcs.Wcs
newWmsProductOutstockDetail.beginTime = DateTime.Now;
newWmsProductOutstockDetail.endTime = DateTime.Now;
-
+
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = null;
item.nextPointId = 2;
@@ -894,27 +895,40 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
#region 插入移库记录
- WmsMove wmsMove = new WmsMove();
- wmsMove.MoveId = StaticData.SnowId.NextId();
- wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
- wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
- wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
- wmsMove.TargetLocationCode = toLocation.locationCode;
- wmsMove.InstockBatch = wmsProductStock.productBatch;
- wmsMove.MaterialId = wmsProductStock.productId;
- wmsMove.PlanAmount = 1;
- wmsMove.RealOutstockAmount = 1;
- wmsMove.RealInstockAmount = 1;
- wmsMove.OperationType = "3";
- wmsMove.MoveWay = "2";
- wmsMove.MoveType = "1";
- wmsMove.AuditStatus = "1";
- wmsMove.ExecuteStatus = "2";
- wmsMove.UpdateBy = "WCS";
- wmsMove.UpdateDate = DateTime.Now;
- wmsMove.BeginTime = DateTime.Now;
- wmsMove.EndTime = DateTime.Now;
-
+ var wmsMove = dbContext.WmsMove.Where(t => t.MoveId == item.orderId).FirstOrDefault();
+ if (wmsMove == null)
+ {
+ wmsMove = new WmsMove();
+ wmsMove.MoveId = StaticData.SnowId.NextId();
+ wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
+ wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
+ wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
+ wmsMove.TargetLocationCode = toLocation.locationCode;
+ wmsMove.InstockBatch = wmsProductStock.productBatch;
+ wmsMove.MaterialId = wmsProductStock.productId;
+ wmsMove.PlanAmount = 1;
+ wmsMove.RealOutstockAmount = 1;
+ wmsMove.RealInstockAmount = 1;
+ wmsMove.OperationType = "3";
+ wmsMove.MoveWay = "2";
+ wmsMove.MoveType = "1";
+ wmsMove.AuditStatus = "1";
+ wmsMove.ExecuteStatus = "2";
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.BeginTime = DateTime.Now;
+ wmsMove.EndTime = DateTime.Now;
+ dbContext.WmsMove.Add(wmsMove);
+ }
+ else
+ {
+ wmsMove.RealOutstockAmount += 1;
+ wmsMove.EndTime = DateTime.Now;
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.ExecuteStatus = "2";
+ dbContext.Update(wmsMove);
+ }
WmsMoveDetail wmsMoveDetail = new WmsMoveDetail();
wmsMoveDetail.MoveId = wmsMove.MoveId;
wmsMoveDetail.MaterialBarcode = wmsMove.InstockBatch;
@@ -931,7 +945,6 @@ namespace Khd.Core.Wcs.Wcs
wmsMoveDetail.UpdateBy = "WCS";
wmsMoveDetail.UpdateDate = DateTime.Now;
- dbContext.WmsMove.Add(wmsMove);
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
index 56942e6..b6f82b1 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
@@ -7,6 +7,7 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -60,7 +61,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);//托盘库叫料信号
var ConnectStatus2F = StaticData.PlcDic[2].Read(ConnectStatus2FPoint.plcpointAddress);//2F托盘库产线数据通讯情况
var PalletInIsHas2F = StaticData.PlcDic[2].Read(PalletInIsHas2FPoint.plcpointAddress);//2F托盘库入口上料光电
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
index 1b1cb5c..912d6c5 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
@@ -57,7 +57,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
//2F托盘库产线数据通讯情况
@@ -93,7 +93,7 @@ namespace Khd.Core.Wcs.Wcs
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any();
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1 && !hasTask && Convert.ToInt32(PalletInIsHas2F) == 0 && Convert.ToInt32(ConnectStatus2F) == 1)//小包入口要料
{
- dbContext.WcsTask.Remove(wcsTask);//删除原本的任务
+ dbContext.Remove(wcsTask);//删除原本的任务
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -108,7 +108,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = inEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLineToSmallPackage;//提升机到小包入口的任务类型
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -120,7 +120,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.useFlag == 1 && t.equipStatus == 0 && t.emptyCount == 0);//二楼周转位
if (endEquip != null)
{
- dbContext.WcsTask.Remove(wcsTask);//删除原本的任务
+ dbContext.Remove(wcsTask);//删除原本的任务
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -135,7 +135,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = endEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLiftToTransit;//提升机到周转位的任务类型
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -151,7 +151,7 @@ namespace Khd.Core.Wcs.Wcs
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any();
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1 && !hasTask&& Convert.ToInt32(PalletInIsHas2F) == 0 && Convert.ToInt32(ConnectStatus2F) == 1)//小包入口要料
{
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -166,7 +166,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = inEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLineToSmallPackage;//到小包入口
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -178,7 +178,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null)
{
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -193,7 +193,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = endEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLiftToTransit;//到周转位
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -207,7 +207,7 @@ namespace Khd.Core.Wcs.Wcs
var endEquip = dbContext.BaseEquip.First(t => t.objid == 38);//废料区
if (endEquip.emptyCount == 0)//废料区没有托盘
{
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -220,7 +220,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.currPointNo = lineEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLiftToWaste;
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -232,7 +232,7 @@ namespace Khd.Core.Wcs.Wcs
endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);//周转位
if (endEquip != null)
{
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
@@ -247,7 +247,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = endEquip.equipNo;
newTask.taskType = StaticTaskType.SecondLiftToTransit;
newTask.useFlag = 1;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -263,7 +263,7 @@ namespace Khd.Core.Wcs.Wcs
if (wcsTask.taskType == StaticTaskType.SecondStorageToLift && wcsTask.containerNo == rfid)//50是成品出库
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1);
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.serialNo = SystemData.GetSerialNo(dbContext);
newTask.taskStatus = 0;
@@ -281,7 +281,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.useFlag = 1;
newTask.fromFloorNo = 2;
newTask.floorNo = endEquip.floorNo;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -291,7 +291,7 @@ namespace Khd.Core.Wcs.Wcs
else//一般情况下是废料的任务
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.endPointId);
- dbContext.WcsTask.Remove(wcsTask);
+ dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map(wcsTask);
newTask.serialNo = SystemData.GetSerialNo(dbContext);
newTask.taskStatus = 0;
@@ -309,7 +309,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.useFlag = 1;
newTask.fromFloorNo = 2;
newTask.floorNo = endEquip.floorNo;
- dbContext.WcsTask.Add(newTask);
+ dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
index f25a46b..506e17b 100644
--- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
+++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
@@ -163,7 +163,7 @@ namespace Khd.Core.Wcs.Wcs
using var transaction = dbContext.Database.BeginTransaction();
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var dmsBaseDeviceLedgers = dbContext.DmsBaseDeviceLedger.ToList();
var wcsAgvStatuses = dbContext.WcsAgvStatus.ToList();
var agvStatus = from a in dmsBaseDeviceLedgers
@@ -285,7 +285,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
List wcsTasks = dbContext.WcsTask.Where(t => t.IsDelete == 1).ToList();
foreach (var item in wcsTasks)
{
@@ -294,7 +294,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.endPointId == 11)
{
- dbContext.WcsTask.Remove(item);
+ dbContext.Remove(item);
if (item.taskStatus == 6)
{
dbContext.SaveChanges();
@@ -321,7 +321,7 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
- dbContext.WcsTask.Remove(item);
+ dbContext.Remove(item);
var cancelTask = new
{
reqCode = StaticData.SnowId.NextId().ToString(),
@@ -339,10 +339,20 @@ namespace Khd.Core.Wcs.Wcs
_logger.Error($"任务{item.taskCode}删除失败,原因:{result?.message}");
}
}
+ WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.currPointNo);
+ WmsBaseLocation? toBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.endPointNo);
+ if (wmsBaseLocation != null)
+ {
+ SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
+ }
+ if (toBaseLocation != null)
+ {
+ SystemData.UnLockOutLocation(toBaseLocation, dbContext);
+ }
}
else
{
- dbContext.WcsTask.Remove(item);
+ dbContext.Remove(item);
dbContext.SaveChanges();
_logger.Info($"任务{item.objid}已删除");
}
@@ -373,7 +383,7 @@ namespace Khd.Core.Wcs.Wcs
if (errorCount > 3)
{
_logger.Error($"Plc220短线重连失败超过{errorCount}次");
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.InsertWaringLog(dbContext, WaringType.设备Plc通讯异常, $"Plc220短线重连失败超过{errorCount}次");
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 15).FirstOrDefault();
//if (dmsRecordAlarmTime == null)
@@ -397,7 +407,7 @@ namespace Khd.Core.Wcs.Wcs
//}
}
StaticData.PlcDic[2].Read(HeartBeat30.plcpointAddress);
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.DeleteWaringLog(dbContext, WaringType.设备Plc通讯异常);
}
@@ -438,7 +448,7 @@ namespace Khd.Core.Wcs.Wcs
if (errorCount > 3)
{
_logger.Error($"Plc30短线重连失败超过{errorCount}次");
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.InsertWaringLog(dbContext, WaringType.提升机Plc通讯异常, $"Plc30短线重连失败超过{errorCount}次");
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
//if (dmsRecordAlarmTime == null)
@@ -464,7 +474,7 @@ namespace Khd.Core.Wcs.Wcs
}
heartBeatCount = !heartBeatCount;
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.DeleteWaringLog(dbContext, WaringType.提升机Plc通讯异常);
}
catch
@@ -504,7 +514,8 @@ namespace Khd.Core.Wcs.Wcs
if (errorCount > 3)
{
_logger.Error($"Plc31短线重连失败超过{errorCount}次");
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
+
SystemData.InsertWaringLog(dbContext, WaringType.U型线Plc通讯异常, $"Plc31短线重连失败超过{errorCount}次");
//var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
//if (dmsRecordAlarmTime == null)
@@ -529,7 +540,7 @@ namespace Khd.Core.Wcs.Wcs
}
heartBeatCount = !heartBeatCount;
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.DeleteWaringLog(dbContext, WaringType.U型线Plc通讯异常);
}
catch (Exception ex)
@@ -569,14 +580,14 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
List updateEquips = dbContext.BaseEquip.Where(t => t.remark == "99").ToList();
if (updateEquips.Count > 0)
{
foreach (var equip in updateEquips)
{
equip.remark = "0";
- dbContext.BaseEquip.Update(equip);
+ dbContext.Update(equip);
dbContext.SaveChanges();
}
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
@@ -620,7 +631,7 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.Database.BeginTransaction();
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var dmsBaseAlarmRules = StaticData.DmsBaseAlarmRuleList.Where(t => t.DeviceId == -1).ToList();
var wcsAgvStatuses = dbContext.WcsAgvStatus.ToList();
var robotCodes = wcsAgvStatuses.Select(t => long.Parse(t.RobotCode)).ToList();
@@ -634,7 +645,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (dmsRecordAlarmTime == null)
{
- dmsRecordAlarmTime=new DmsRecordAlarmTime
+ dmsRecordAlarmTime = new DmsRecordAlarmTime
{
DeviceId = int.Parse(agvStatus.RobotCode),
AlarmBeginTime = DateTime.Now,
@@ -845,7 +856,7 @@ namespace Khd.Core.Wcs.Wcs
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
var baseEquip = StaticData.BaseEquip.First(t => t.objid == 9);
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var basePlcs = StaticData.basePlcs.Where(t => t.Station == "3楼AGV").ToList();
var data = new
{
@@ -908,7 +919,7 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var baseEquip = StaticData.BaseEquip.First(t => t.objid == 8);
var basePlcs = StaticData.basePlcs.Where(t => t.Station == "2楼AGV").ToList();
var data = new
@@ -980,7 +991,7 @@ namespace Khd.Core.Wcs.Wcs
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
var baseEquip = StaticData.BaseEquip.First(t => t.objid == 28);
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼AGV").ToList();
var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 28).ToList();
if (wcsCmds.Count > 0)
@@ -1018,7 +1029,7 @@ namespace Khd.Core.Wcs.Wcs
var XPlc = basePlcs.First(t => t.Name.Contains('X'));
var Ylc = basePlcs.First(t => t.Name.Contains('Y'));
var status = basePlcs.First(t => t.Name.Contains("Status"));
- if(cardStatus.Online.ToLower()== "true")
+ if (cardStatus.Online.ToLower() == "true")
{
StaticData.PlcDic[2].WriteToPoint(status.Address, cardStatus.Status, status.type);
}
@@ -1083,7 +1094,7 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList();
var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 10).ToList();
if (wcsCmds.Count > 0)
@@ -1123,7 +1134,7 @@ namespace Khd.Core.Wcs.Wcs
using var scope = host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
var baseEquip = StaticData.BaseEquip.First(t => t.objid == 11);
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList();
var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 11).ToList();
if (wcsCmds.Count > 0)
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
index c3f4cdf..139b727 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
@@ -94,7 +94,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var getTrayValue = StaticData.PlcDic[2].Read(getTrayPoint.plcpointAddress);
if (getTrayValue != null && Convert.ToBoolean(getTrayValue))
{
@@ -152,7 +152,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
var taskList = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Where(t => t.useFlag == 1).OrderBy(t => t.createTime).ToList();
foreach (var item in taskList)
@@ -575,7 +575,7 @@ namespace Khd.Core.Wcs.Wcs
using var transaction = dbContext.Database.BeginTransaction();
try
{
- var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault();
+ var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsBaseLocation toLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).First();
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
@@ -601,27 +601,40 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
#region 插入移库记录
- WmsMove wmsMove = new WmsMove();
- wmsMove.MoveId = StaticData.SnowId.NextId();
- wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
- wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
- wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
- wmsMove.TargetLocationCode = toLocation.locationCode;
- wmsMove.InstockBatch = wmsRawStock.instockBatch;
- wmsMove.MaterialId = wmsRawStock.materialId;
- wmsMove.PlanAmount = 1;
- wmsMove.RealOutstockAmount = 1;
- wmsMove.RealInstockAmount = 1;
- wmsMove.OperationType = "3";
- wmsMove.MoveWay = "2";
- wmsMove.MoveType = "1";
- wmsMove.AuditStatus = "1";
- wmsMove.ExecuteStatus = "2";
- wmsMove.UpdateBy = "WCS";
- wmsMove.UpdateDate = DateTime.Now;
- wmsMove.BeginTime = DateTime.Now;
- wmsMove.EndTime = DateTime.Now;
-
+ var wmsMove = dbContext.WmsMove.Where(t => t.MoveId == item.orderId).FirstOrDefault();
+ if (wmsMove == null)
+ {
+ wmsMove = new WmsMove();
+ wmsMove.MoveId = StaticData.SnowId.NextId();
+ wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
+ wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
+ wmsMove.OriLocationCode = wmsBaseLocation.locationCode;
+ wmsMove.TargetLocationCode = toLocation.locationCode;
+ wmsMove.InstockBatch = wmsRawStock.instockBatch;
+ wmsMove.MaterialId = wmsRawStock.materialId;
+ wmsMove.PlanAmount = 1;
+ wmsMove.RealOutstockAmount = 1;
+ wmsMove.RealInstockAmount = 1;
+ wmsMove.OperationType = "3";
+ wmsMove.MoveWay = "2";
+ wmsMove.MoveType = "1";
+ wmsMove.AuditStatus = "1";
+ wmsMove.ExecuteStatus = "2";
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.BeginTime = DateTime.Now;
+ wmsMove.EndTime = DateTime.Now;
+ dbContext.WmsMove.Add(wmsMove);
+ }
+ else
+ {
+ wmsMove.RealOutstockAmount += 1;
+ wmsMove.EndTime = DateTime.Now;
+ wmsMove.UpdateDate = DateTime.Now;
+ wmsMove.UpdateBy = "WCS";
+ wmsMove.ExecuteStatus = "2";
+ dbContext.Update(wmsMove);
+ }
WmsMoveDetail wmsMoveDetail = new WmsMoveDetail();
wmsMoveDetail.MoveId = wmsMove.MoveId;
wmsMoveDetail.MaterialBarcode = wmsMove.InstockBatch;
@@ -638,7 +651,6 @@ namespace Khd.Core.Wcs.Wcs
wmsMoveDetail.UpdateBy = "WCS";
wmsMoveDetail.UpdateDate = DateTime.Now;
- dbContext.WmsMove.Add(wmsMove);
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
@@ -775,24 +787,24 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutstock.endTime = DateTime.Now;
wmsRawOutstock.executeStatus = "2";
}
-
+
}
else
{
wmsRawOutstock = new WmsRawOutstock()
{
- rawOutstockId=StaticData.SnowId.NextId(),
- warehouseId=311,
- taskCode="",
- outstockAmount=1,
- realOutstockAmount=1,
- operationType="3",
- taskType="1",
- auditStatus="0",
- executeStatus="2",
- saleOrderId= mesBaseBarcodeInfo!= null ? mesBaseBarcodeInfo.saleOrderId : 0,
+ rawOutstockId = StaticData.SnowId.NextId(),
+ warehouseId = 311,
+ taskCode = "",
+ outstockAmount = 1,
+ realOutstockAmount = 1,
+ operationType = "3",
+ taskType = "1",
+ auditStatus = "0",
+ executeStatus = "2",
+ saleOrderId = mesBaseBarcodeInfo != null ? mesBaseBarcodeInfo.saleOrderId : 0,
};
-
+
}
newWmsRawOutstockDetail.rawOutstockId = wmsRawOutstock.rawOutstockId;
newWmsRawOutstockDetail.taskCode = wmsRawOutstock.taskCode;
@@ -820,7 +832,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31);
endEquip.emptyCount = 1;
-
+
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Update(endEquip);
dbContext.Remove(wmsRawStock);
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
index 27afe74..d8e617e 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
@@ -54,7 +54,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index 450749e..a3efaba 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -2351,8 +2351,17 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
index 2f885fa..22c15f7 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
@@ -264,7 +264,7 @@ namespace Khd.Core.Wpf.Form
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
int waitCtuCount = dbContext.WcsTask.Where(t => t.taskType == 30).Where(t => t.useFlag == 0).Where(t => t.taskStatus == 0).Count();
Dispatcher.Invoke(() =>
{
@@ -456,7 +456,7 @@ namespace Khd.Core.Wpf.Form
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
List wmsRawReturns = dbContext.WmsRawReturn.Where(t => endStationCodes.Contains(t.endStationCode))
.Where(t => t.auditStatus == "1")
.Where(t => t.executeStatus == "0" || t.executeStatus == "1")
@@ -537,7 +537,7 @@ namespace Khd.Core.Wpf.Form
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
List wmsRawOutstocks = dbContext.WmsRawOutstock
.Where(t => endStationCodes.Contains(t.endStationCode))
@@ -548,7 +548,14 @@ namespace Khd.Core.Wpf.Form
List list = wmsRawOutstocks.Select(t => t.endStationCode).ToList();
Dispatcher.Invoke(() =>
{
- this.OutOrder.Text = "待出库单:\n" + list.Distinct().Join("\n");
+ this.OutEndStations.ItemsSource = null;
+ this.OutEndStations.Items.Clear();
+ this.OutEndStations.ItemsSource = list.Distinct().Select(t => new
+ {
+ EndStationName = t,
+ ForeColor = baseEquip.endStationCode == null ? Brushes.Black : baseEquip.endStationCode.Contains(t) ? Brushes.Green : Brushes.Black
+ });
+ this.OutEndStations.Items.Refresh();
});
wmsRawOutstocks = wmsRawOutstocks
.Where(t => baseEquip.endStationCode.Contains(t.endStationCode))
@@ -556,28 +563,28 @@ namespace Khd.Core.Wpf.Form
List orderIds = wmsRawOutstocks.Select(t => t.rawOutstockId).ToList();
var endStations = wmsRawOutstocks.Select(t => new
{
- orderId=t.saleOrderId,
+ orderId = t.saleOrderId,
t.materialId,
t.endStationCode
});
string nowStationCode = baseEquip.endStationCode;
- if (!string.IsNullOrEmpty(nowStationCode))
- {
- Dispatcher.Invoke(() =>
- {
- SelectOutButton.Content = "当前:" + nowStationCode;
- //SelectOutButton.IsEnabled = false;
- });
- }
- else
- {
- Dispatcher.Invoke(() =>
- {
- SelectOutButton.Content = "选择出库";
- //SelectOutButton.IsEnabled = true;
- });
- }
-
+ //if (!string.IsNullOrEmpty(nowStationCode))
+ //{
+ // Dispatcher.Invoke(() =>
+ // {
+ // SelectOutButton.Content = "当前:" + nowStationCode;
+ // //SelectOutButton.IsEnabled = false;
+ // });
+ //}
+ //else
+ //{
+ // Dispatcher.Invoke(() =>
+ // {
+ // SelectOutButton.Content = "选择出库";
+ // //SelectOutButton.IsEnabled = true;
+ // });
+ //}
+
if (!string.IsNullOrEmpty(baseEquip.endStationCode))
@@ -631,7 +638,7 @@ namespace Khd.Core.Wpf.Form
.Where(pallet => pallet.MaterialId == order.materialId)
.Select(pallet => $"托盘{pallet.PalletInfoCode}数量{string.Format("{0:0.00}", pallet.canUseAmount)}")
),
- EndStationCodes =string.Join(",",endStations.Where(t => t.materialId == order.materialId && t.orderId == order.saleOrderId).Select(t => t.endStationCode).ToList())
+ EndStationCodes = string.Join(",", endStations.Where(t => t.materialId == order.materialId && t.orderId == order.saleOrderId).Select(t => t.endStationCode).ToList())
}).ToList();
List materialIds = RawOutstocks.Select(t => t.materialId).ToList();
@@ -650,7 +657,7 @@ namespace Khd.Core.Wpf.Form
realOutstockAmount = string.Format("{0:0.00}", r.RealOutstockAmount),
isSendOver = r.RequestedAmount <= r.RealOutstockAmount ? "已出完" : "未出完",
thisOutAmount = r.PalletDetails,
- EndStationCodes=r.EndStationCodes
+ EndStationCodes = r.EndStationCodes
};
#endregion
@@ -736,7 +743,7 @@ namespace Khd.Core.Wpf.Form
{
try
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
var wcsAgvStatuses = dbContext.WcsAgvStatus.ToList();
var list = wcsAgvStatuses.Select(
t => new
@@ -784,7 +791,7 @@ namespace Khd.Core.Wpf.Form
{
lock (updateLock)
{
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ dbContext.ChangeTracker.Clear();
SystemData.BaseEquip = dbContext.BaseEquip.ToList();
BaseEquip baseEquip = SystemData.BaseEquip.First(t => t.objid == 40);
Dispatcher.Invoke(() =>
@@ -1032,7 +1039,7 @@ namespace Khd.Core.Wpf.Form
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
Currentselected.taskStatus = 5;
- dbContext.WcsTask.Update(Currentselected);
+ dbContext.Update(Currentselected);
dbContext.SaveChanges();
GetTask();
}
@@ -1564,7 +1571,7 @@ namespace Khd.Core.Wpf.Form
{
BaseEquip baseEquip = dbContext.BaseEquip.Where(t => t.objid == 10).First();
List? list = JsonConvert.DeserializeObject>(baseEquip.endStationCode);
- new SelectOutRawForm(_host,"",3,list).ShowDialog();
+ new SelectOutRawForm(_host, "", 3, list).ShowDialog();
if (string.IsNullOrEmpty(SelectOutRawForm.StationCode))
{
return;
@@ -1860,18 +1867,18 @@ namespace Khd.Core.Wpf.Form
TextBlock? textBlock = null;
Dispatcher.Invoke(() =>
{
- foreach(var ch in this.UXX.Children)
+ foreach (var ch in this.UXX.Children)
{
- if(ch is TextBlock tb)
+ if (ch is TextBlock tb)
{
- if(tb.Name == item.plcpointNo)
+ if (tb.Name == item.plcpointNo)
{
textBlock = tb;
break;
}
}
}
- if(textBlock == null)
+ if (textBlock == null)
{
foreach (var ch in this.TSJ.Children)
{
@@ -2002,7 +2009,7 @@ namespace Khd.Core.Wpf.Form
else
{
wcsTask.CTUExecute = "1";
- dbContext.WcsTask.Update(wcsTask);
+ dbContext.Update(wcsTask);
dbContext.SaveChanges();
HandyControl.Controls.MessageBox.Info("CTU入库任务确认完成成功!");
}
@@ -2135,7 +2142,7 @@ namespace Khd.Core.Wpf.Form
warehouseId = 512
};
- dbContext.WmsRawInstock.Add(wmsRawInstock);
+ dbContext.Add(wmsRawInstock);
dbContext.SaveChanges();
totalMessage = wmsRawStock.totalAmount;
}
@@ -2188,7 +2195,7 @@ namespace Khd.Core.Wpf.Form
poNo = mesBaseBarcodeInfo.poNo,
warehouseId = 512
};
- dbContext.WmsRawInstock.Add(wmsRawInstock);
+ dbContext.Add(wmsRawInstock);
dbContext.SaveChanges();
totalMessage = newRawStock.totalAmount;
}
@@ -3245,6 +3252,8 @@ namespace Khd.Core.Wpf.Form
if (InventoryCheck.CheckStatus != "2")
{
InventoryCheck.CheckStatus = "2";
+ InventoryCheck.InventoriedAmount+= InventoryCheck.InventoryingAmount;
+ InventoryCheck.InventoryingAmount = 0;
InventoryCheck.EndTime = DateTime.Now;
}
dbContext.WmsInventoryCheck.Update(InventoryCheck);
@@ -3305,7 +3314,7 @@ namespace Khd.Core.Wpf.Form
MessageBoxResult isContinueCreateResult = HandyControl.Controls.MessageBox.Show(stringContainers.ToString(), "提示", MessageBoxButton.YesNo);
if (isContinueCreateResult == MessageBoxResult.Yes)
{
- dbContext.WcsTask.RemoveRange(removeList);
+ dbContext.RemoveRange(removeList);
}
else
{
@@ -3425,7 +3434,7 @@ namespace Khd.Core.Wpf.Form
MessageBoxResult isContinueCreateResult = HandyControl.Controls.MessageBox.Show(stringContainers.ToString(), "提示", MessageBoxButton.YesNo);
if (isContinueCreateResult == MessageBoxResult.Yes)
{
- dbContext.WcsTask.RemoveRange(removeList);
+ dbContext.RemoveRange(removeList);
}
else
{
@@ -5115,14 +5124,14 @@ namespace Khd.Core.Wpf.Form
{
foreach (var item in this.LocaltionGrid.Children)
{
- if(item is Grid grid)
+ if (item is Grid grid)
{
- foreach(var btn in grid.Children)
+ foreach (var btn in grid.Children)
{
- if(btn is Button button)
+ if (btn is Button button)
{
var location = wmsBaseLocations.Where(t => t.locationCode == button.Name.Replace("Location", "")).FirstOrDefault();
- if(location != null)
+ if (location != null)
{
button.Background = string.IsNullOrEmpty(location.containerCode) ? new SolidColorBrush((Color)ColorConverter.ConvertFromString("#4789AE")) : new SolidColorBrush((Color)ColorConverter.ConvertFromString("#75F76D"));
}
diff --git a/src/Khd.Core.Wpf/Khd.Core.Wpf.csproj b/src/Khd.Core.Wpf/Khd.Core.Wpf.csproj
index 5d191f6..7e35cd8 100644
--- a/src/Khd.Core.Wpf/Khd.Core.Wpf.csproj
+++ b/src/Khd.Core.Wpf/Khd.Core.Wpf.csproj
@@ -5,6 +5,7 @@
net6.0-windows
enable
true
+ enable
@@ -483,5 +484,8 @@
Always
+
+
+
diff --git a/src/Khd.Core.Wpf/TaskForm/Inventory/AddNewStockForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/Inventory/AddNewStockForm.xaml.cs
index e6ec36a..a8391b2 100644
--- a/src/Khd.Core.Wpf/TaskForm/Inventory/AddNewStockForm.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/Inventory/AddNewStockForm.xaml.cs
@@ -146,7 +146,7 @@ namespace Khd.Core.Wpf.TaskForm
warehouseId = 512
};
- dbContext.WmsRawInstock.Add(wmsRawInstock);
+ dbContext.Add(wmsRawInstock);
dbContext.SaveChanges();
totalMessage = wmsRawStock.totalAmount;
}
@@ -199,7 +199,7 @@ namespace Khd.Core.Wpf.TaskForm
poNo = mesBaseBarcodeInfo.poNo,
warehouseId = 512
};
- dbContext.WmsRawInstock.Add(wmsRawInstock);
+ dbContext.Add(wmsRawInstock);
#region 添加盘点明细
WmsInventoryCheck wmsInventoryCheck = dbContext.WmsInventoryCheck.Where(x => x.CheckStatus == "1").FirstOrDefault();
diff --git a/src/Khd.Core.Wpf/TaskForm/Inventory/UpdateAmountWindow.xaml.cs b/src/Khd.Core.Wpf/TaskForm/Inventory/UpdateAmountWindow.xaml.cs
index e68f83a..e7ed8f3 100644
--- a/src/Khd.Core.Wpf/TaskForm/Inventory/UpdateAmountWindow.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/Inventory/UpdateAmountWindow.xaml.cs
@@ -73,7 +73,14 @@ namespace Khd.Core.Wpf.TaskForm
if (wmsRawStock != null)
{
wmsRawStock.totalAmount = stockAmountValue;
- dbContext.Update(wmsRawStock);
+ if (wmsRawStock.totalAmount == 0)
+ {
+ dbContext.Remove(wmsRawStock);
+ }
+ else
+ {
+ dbContext.Update(wmsRawStock);
+ }
// 修改盘库明细
WmsInventoryCheckDetail wmsInventoryDetail = dbContext.WmsInventoryCheckDetail.Where(x => x.LocationCode == locationCode && x.MaterialBatch == barcodeInfo && x.CheckStatus=="1").OrderByDescending(X=>X.CreateTime).FirstOrDefault();
if(wmsInventoryDetail != null)
diff --git a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
index 907291a..39661f0 100644
--- a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
@@ -62,7 +62,7 @@ namespace Khd.Core.Wpf.TaskForm
}
baseEquip.ud3 = _ud3;
baseEquip.IsOut = _isOut;
- dbContext.BaseEquip.Update(baseEquip);
+ dbContext.Update(baseEquip);
dbContext.SaveChanges();
this.Close();
}