1 year ago
parent be4bf3b98e
commit 7f3316ded8

@ -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
{

@ -44,6 +44,7 @@
<ItemGroup>
<Using Include="Khd.Core.Plc" />
<Using Include="Microsoft.EntityFrameworkCore" />
</ItemGroup>
</Project>

@ -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);
}
}
}
}

@ -98,6 +98,6 @@ internal class Program
.ConfigureServices((_, services) =>
{
services.AddDbContext<DefaultDbContext>(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);
});
}

@ -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<DefaultDbContext>();
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<long> wareHouseIds = new List<long>
{
231,311,511,531
};
while (true)
{
try
{
dbContext.ChangeTracker.Clear();
List<WmsMove> 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<WcsTaskLog>(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<BaseEquip> 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<string> locationCodes = CanRemoveWmsBaseLocations.Select(t => t.locationCode).ToList();
List<WmsProductStock> 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

@ -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)

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

@ -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)

@ -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)

@ -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);

@ -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);

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

@ -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托盘库入口上料光电

@ -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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(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>(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<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();

@ -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<WcsTask> 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<BaseEquip> 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<DefaultDbContext>();
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<DefaultDbContext>();
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<DefaultDbContext>();
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<DefaultDbContext>();
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<DefaultDbContext>();
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)

@ -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);

@ -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);

@ -2351,8 +2351,17 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
<Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="1" Grid.Column="4" Grid.RowSpan="2" Margin="20 0 0 0">
<StackPanel Orientation="Vertical" >
<TextBlock x:Name="OutOrder" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<TextBlock x:Name="OutOrder" Text="待出库:" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<TextBlock x:Name="thisOutEndStation" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,20,0,0"/>
<ListBox x:Name='OutEndStations' HorizontalAlignment="Center" Background="Transparent" Foreground="White">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding EndStationName}" Foreground="{Binding ForeColor}" FontSize="18"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Border>
<Border BorderBrush="White" BorderThickness="0" Grid.ColumnSpan="1" Grid.Column="6" Grid.RowSpan="2" Margin="20 0 0 0">

@ -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<WmsRawReturn> 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<WmsRawOutstock> wmsRawOutstocks = dbContext.WmsRawOutstock
.Where(t => endStationCodes.Contains(t.endStationCode))
@ -548,7 +548,14 @@ namespace Khd.Core.Wpf.Form
List<string> 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<long?> 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<long?> 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<DefaultDbContext>();
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<string>? list = JsonConvert.DeserializeObject<List<string>>(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"));
}

@ -5,6 +5,7 @@
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
@ -483,5 +484,8 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.EntityFrameworkCore" />
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
</Project>

@ -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();

@ -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)

@ -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();
}

Loading…
Cancel
Save