add-合并冲突

master
liuwf 1 year ago
commit 2351c2cd21

@ -64,7 +64,7 @@ namespace Khd.Core.Wcs.Global
public static List<BasePlc> basePlcs = new List<BasePlc>();
public static List<PlcConfig> PlcConfigs { get; set; }
public static int DeleteLogDay { get; internal set; }
public static List<string> BigContainerCodes = new List<string>(){ "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004" };
public static List<string> BigContainerCodes = new List<string>(){ "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004"};
public static Dictionary<int, Dictionary<string, PlcPoint>> PlcPoints = new Dictionary<int, Dictionary<string, PlcPoint>>();
public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>();

@ -96,6 +96,10 @@ namespace Khd.Core.Wcs
ThirdFloorAGV thirdFloorAGV = new(_host, ThirdFloorAgvEquip.floorNo.Value);
thirdFloorAGV.StartPoint();
//四楼接驳位
FourthFloorPoint fourthFloorPoint = new FourthFloorPoint(_host, 4);
fourthFloorPoint.StartPoint();
//五层接驳位
var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
FiveFloorPoint fifthFloorPoint = new(_host, FifthBaseFloorEquip.floorNo.Value);

@ -1,4 +1,5 @@
using Khd.Core.EntityFramework;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
namespace Khd.Core.Wcs
{
@ -28,5 +29,40 @@ namespace Khd.Core.Wcs
}
public static object outStockLock = new object();
/// <summary>
/// 出入库锁定浅库位
/// </summary>
/// <param name="wmsBaseLocation"></param>
/// <param name="dbContext"></param>
public static void LockOutLocation(WmsBaseLocation wmsBaseLocation,DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if(wmsLocation != null)
{
wmsLocation.locationStatus = "2";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 出入库解锁浅库位
/// </summary>
/// <param name="wmsBaseLocation"></param>
/// <param name="dbContext"></param>
public static void UnLockOutLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null)
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
}
}
}

@ -387,7 +387,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
var bill = from a in mesBasePalletInfos
join b in wmsBaseLocations.Where(t => t.locDeep == 1&&t.returnFlag=="1") on a.palletInfoCode equals b.containerCode
join b in wmsBaseLocations.Where(t => t.locDeep == 1 && t.returnFlag == "1") on a.palletInfoCode equals b.containerCode
select new { b };//等于当前任务的物料的托盘的库位信息
var outBill = from a in bill
@ -400,10 +400,10 @@ namespace Khd.Core.Wcs.Wcs
select new { a, b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
WmsBaseLocation? wmsBaseLocation = null;
wmsBaseLocation ??= outBill.Where(t=> !cannotIn.Contains(t.b.locationCode)).FirstOrDefault()?.b;//先找相同物料的外侧库位
wmsBaseLocation ??= outBill.Where(t => !cannotIn.Contains(t.b.locationCode)).FirstOrDefault()?.b;//先找相同物料的外侧库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => !cannotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 1);//找不到再找深库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => !cannotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
//深浅库位问题?库位入库优先级等
//深浅库位问题?库位入库优先级等
var AgvEquip = StaticData.BaseEquip.First(t => t.objid == 28);//5楼叉车
if (wmsBaseLocation != null)
@ -462,6 +462,7 @@ namespace Khd.Core.Wcs.Wcs
rawInstockId = wmsRawInstock.rawInstockId,
taskCode = wmsRawInstock.taskCode,
};
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wmsRawInstockDetail);
dbContext.Update(wmsBaseLocation);
dbContext.Add(newTask);
@ -503,13 +504,17 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9 || t.nextPointId == 8).OrderBy(t => t.createBy).FirstOrDefault();
if (wcsTaskManual != null)
{
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsTaskManual);
wcsTask.createTime = DateTime.Now;
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.Remove(wcsTaskManual);
dbContext.SaveChanges();
var equip = dbContext.BaseEquip.Where(t => t.objid == wcsTaskManual.endPointId).FirstOrDefault();
if (equip != null && equip.equipStatus == 0)
{
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsTaskManual);
wcsTask.createTime = DateTime.Now;
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.Remove(wcsTaskManual);
dbContext.SaveChanges();
}
}
}
}
@ -735,7 +740,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationScrapType == "1")
.Where(t => t.locationStatus == "1")
.Where(t => t.containerCode == null)
.Where(t=>t.warehouseId==521)
.Where(t => t.warehouseId == 521)
.OrderByDescending(t => t.locColumn)
.FirstOrDefault();
if (wmsBaseLocation != null)
@ -956,6 +961,8 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = 1
};
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(fromBaseLocation, dbContext);
toLocation.locationStatus = "4";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
@ -1034,6 +1041,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = 1
};
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
wmsBaseLocation.locationStatus = "6";
dbContext.Update(wmsBaseLocation);
dbContext.Add(wmsRawOutstockDetail);
@ -1278,6 +1286,9 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = 1
};
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
toLocation.locationStatus = "4";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
@ -1345,6 +1356,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = 1
};
SystemData.LockOutLocation(location, dbContext);
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
@ -1523,6 +1535,8 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = 1
};
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
toLocation.locationStatus = "4";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
@ -1589,6 +1603,7 @@ namespace Khd.Core.Wcs.Wcs
productOutstockDetailId = StaticData.SnowId.NextId(),
productBarcode = mesBasePalletInfo.materialBarcode,
};
SystemData.LockOutLocation(location, dbContext);
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
@ -1808,6 +1823,10 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode))
{
if (item.endStationCode != endStationCodeEquip.endStationCode)
{
continue;
}
bool CreateSuccess = false;
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 11).Any();
if (!hasTask)
@ -1972,7 +1991,7 @@ namespace Khd.Core.Wcs.Wcs
}
BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10);
BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == endStationCodeEquip.endStationCode);
hasTask = dbContext.WcsTask.Where(t => t.taskType == 32).Any();
if (!hasTask)
{
@ -2002,6 +2021,8 @@ namespace Khd.Core.Wcs.Wcs
fromFloorNo = 5,
};
dbContext.Add(bearAgvTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(bearAgvTask);
dbContext.Add(wcsTaskLog);
}
if (item.beginTime == null)
@ -2195,6 +2216,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = qty
};
//location是出库的库位mesBaseBarcodeInfo是条码信息表数据item是出库申请单
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
{
rawOutstockDetailId = StaticData.SnowId.NextId(),
@ -2220,6 +2242,7 @@ namespace Khd.Core.Wcs.Wcs
{
item.beginTime = DateTime.Now;
}
SystemData.LockOutLocation(location, dbContext);
dbContext.Add(wmsProductOutstockDetail);
location.locationStatus = "6";
location.updateBy = "WCS";

@ -11,6 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System.ComponentModel;
using System.Transactions;
using Z.EntityFramework.Plus;
@ -416,7 +417,6 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskStatus == 5)
{
if (item.taskType == 66)//移库
{
Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo);
@ -430,7 +430,7 @@ namespace Khd.Core.Wcs.Wcs
wmsRawStock.locationCode = item.endPointNo;
dbContext.Update(wmsRawStock);
}
else if(wmsRawStock == null)
else if (wmsRawStock == null)
{
var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo);
if (wmsProductStock != null)
@ -448,9 +448,13 @@ namespace Khd.Core.Wcs.Wcs
continue;
}
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);
SystemData.UnLockOutLocation(toLocation, dbContext);
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
{
returnFlag="0",
returnFlag = "0",
locationStatus = "1",
containerCode = null,
updateTime = DateTime.Now
@ -458,7 +462,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
returnFlag=wmsBaseLocation.returnFlag,
returnFlag = wmsBaseLocation.returnFlag,
containerCode = item.containerNo,
updateTime = DateTime.Now
});
@ -482,6 +486,7 @@ namespace Khd.Core.Wcs.Wcs
if (wmsProductOutstockDetail != null && wmsProductOutstock != null)
{
wmsProductOutstockDetail.executeStatus = "2";
wmsProductOutstockDetail.endTime = DateTime.Now;
dbContext.Update(wmsProductOutstockDetail);
wmsProductOutstock.outstockQty += 1;
if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty)
@ -496,6 +501,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation);
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
WcsTask newTask = CoreMapper.Map<WcsTask>(item);
@ -527,7 +533,10 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutstock.realOutstockAmount += 1;
wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstock.executeStatus = "2";
wmsRawOutstock.endTime = DateTime.Now;
wmsRawOutstockDetail.outstockTime = DateTime.Now;
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
wmsBaseLocation.returnFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = null;
@ -562,6 +571,7 @@ namespace Khd.Core.Wcs.Wcs
if (wmsProductInstockDetail != null)
{
wmsProductInstock.executeStatus = "2";
wmsProductInstock.endTime = DateTime.Now;
dbContext.Update(wmsProductInstock);
WmsProductStock wmsProductStock = new WmsProductStock()
{
@ -590,6 +600,7 @@ namespace Khd.Core.Wcs.Wcs
};
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
wmsProductInstockDetail.executeStatus = "2";
wmsProductInstockDetail.instockDate = DateTime.Now;
startEquip.emptyCount = 0;
dbContext.Update(wmsProductInstockDetail);
dbContext.Update(startEquip);
@ -613,6 +624,8 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutStock.realOutstockAmount += 1;
wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutStock.executeStatus = "2";
wmsRawOutStock.endTime = DateTime.Now;
wmsRawOutstockDetail.outstockTime = DateTime.Now;
dbContext.Update(wmsRawOutStock);
dbContext.Update(wmsRawOutstockDetail);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
@ -620,6 +633,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.containerCode = null;
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault();
if (wmsRawStock != null)
{
@ -672,6 +686,23 @@ namespace Khd.Core.Wcs.Wcs
updateDate = DateTime.Now,
warehouseId = 511,
};
WmsRawInstock wmsRawInstock = new WmsRawInstock()
{
beginTime = System.DateTime.Now,
endTime = DateTime.Now,
locationCode = wmsBaseLocation.locationCode,
executeStatus = "2",
instockAmount = 1,
instockType = "2",
materialBatchCode = mesBaseBarcodeInfo.barcodeInfo,
materialId = mesBaseBarcodeInfo.materialId,
operationType = "3",
palletInfoCode = mesBaseBarcodeInfo.palletInfoCode,
poNo = mesBaseBarcodeInfo.poNo,
warehouseId = 511
};
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wmsRawInstock);
dbContext.Add(wmsRawStock);
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
startEquip.emptyCount = 0;
@ -682,9 +713,9 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
}
}
}
else if (item.taskType == 47)
else if (item.taskType == 47)//原材料入库
{
Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo);
_logger.Info("五楼Agv完成任务成功" + item.ToJsonString());
@ -722,6 +753,23 @@ namespace Khd.Core.Wcs.Wcs
updateDate = DateTime.Now,
warehouseId = 511,
};
WmsRawInstock wmsRawInstock = new WmsRawInstock()
{
beginTime = DateTime.Now,
endTime = DateTime.Now,
locationCode = wmsBaseLocation.locationCode,
executeStatus = "2",
instockAmount = 1,
instockType = "1",
materialBatchCode = mesBaseBarcodeInfo.barcodeInfo,
materialId = mesBaseBarcodeInfo.materialId,
operationType = "3",
palletInfoCode = mesBaseBarcodeInfo.palletInfoCode,
poNo = mesBaseBarcodeInfo.poNo,
warehouseId = 511
};
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wmsRawInstock);
wmsBaseLocation.returnFlag = "0";
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5);
lineEquip.equipStatus = 0;

@ -99,10 +99,6 @@ namespace Khd.Core.Wcs.Wcs
var waring = StaticData.PlcDic[1].Read(CtuLineWaring.plcpointAddress);
if (rfid != null && isArrive != null && receiveMaterial != null && Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1)
{
if (Convert.ToBoolean(waring))
{
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, "false", CtuLineWaring.plcpointLength.ToString());
}
rfid = rfid[rfid.IndexOf('C')..];
WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid);
if (task == null)
@ -141,6 +137,7 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString());
}
}
else
@ -188,6 +185,7 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString());
}
}
}
@ -227,6 +225,7 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString());
}
}
}

@ -98,7 +98,7 @@ namespace Khd.Core.Wcs.Wcs
}
continue;
}
else
else//小托盘
{
if (wcsTask.taskStatus == 5)//入库,提升机任务是完成状态
{
@ -194,6 +194,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
dbContext.Remove(wcsTask);
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);

@ -21,7 +21,7 @@ namespace Khd.Core.Wcs.Wcs
private readonly IHost _host;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
public FourthFloorPoint(int floor, Plc.S7.Plc plc, IHost host)
public FourthFloorPoint( IHost host,int floor)
{
Floor = floor;
this._host = host;
@ -35,6 +35,7 @@ namespace Khd.Core.Wcs.Wcs
MonitorInLocatorPointThread.IsBackground = true;
MonitorInLocatorPointThread.Name = "FourthFloorPoint";
MonitorInLocatorPointThread.Start();
Console.WriteLine($"{DateTime.Now}:四楼接驳位线程开始");
}
private void MonitorInLocatorPoint()
@ -59,13 +60,36 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.taskStatus == 5)//提升机上来的
{
dbContext.Remove(wcsTask);
dbContext.SaveChanges();
//清除托盘信息
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == rfid);
if (mesBasePalletInfo != null)
{
MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == rfid).FirstOrDefault();
if (mesBaseBarcodeInfo != null)
{
mesBaseBarcodeInfo.palletInfoCode = null;
dbContext.Update(mesBaseBarcodeInfo);
}
mesBasePalletInfo.bindAmount = null;
mesBasePalletInfo.bindAmount = null;
mesBasePalletInfo.materialBarcode = null;
mesBasePalletInfo.materialCode = null;
mesBasePalletInfo.materialId = null;
mesBasePalletInfo.materialName = null;
mesBasePalletInfo.updateBy = "WCS";
mesBasePalletInfo.updateTime = DateTime.Now;
dbContext.Update(mesBasePalletInfo);
dbContext.Remove(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.Remove(wcsTask);
dbContext.SaveChanges();
}
}
}
else
{
bool hasTask = dbContext.WcsTask.Where(t => t.currPointId == 4 || (t.endPointId == 4 && t.taskStatus > 0)).Any();
//如果有任务往当前楼层送,报警
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 4);
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.objid == 6);
if (!hasTask)

@ -189,7 +189,7 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info("二楼Agv下发任务失败" + item.taskType + result);
}
}
else if (item.taskType == 57)//周转位-小包入口
else if (item.taskType == 57)//周转位-提升机
{
var startPoint = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
var agvTask = new RequestAGVTaskDto
@ -440,7 +440,6 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 59)//周转位-小包入口
{
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
var agvTask = new RequestAGVTaskDto
{
@ -454,7 +453,7 @@ namespace Khd.Core.Wcs.Wcs
},
new ()
{
positionCode=endEquip.agvPositionCode,
positionCode=inEquip.agvPositionCode,
type="00"
}
},
@ -639,6 +638,7 @@ namespace Khd.Core.Wcs.Wcs
//dbContext.Update(wmsProductInstockDetail);
dbContext.Add(wmsProductStock);
dbContext.Update(wmsBaseLocation);
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
//dbContext.Update(wmsProductInstock);
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
@ -649,7 +649,7 @@ namespace Khd.Core.Wcs.Wcs
//}
}
}
else if (item.taskType == 50)
else if (item.taskType == 50)//成品出库
{
WmsProductOutstock? wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
if (wmsProductOutstock != null)
@ -666,10 +666,12 @@ namespace Khd.Core.Wcs.Wcs
wmsProductOutstock.executeStatus = "2";
}
wmsProductOutstockDetail.executeStatus = "2";
wmsProductOutstockDetail.endTime = DateTime.Now;
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = null;
item.nextPointId = 2;
item.taskStatus = 8;
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Remove(wmsProductStock);
dbContext.Update(wmsBaseLocation);
dbContext.Update(wmsProductOutstockDetail);
@ -740,6 +742,10 @@ namespace Khd.Core.Wcs.Wcs
try
{
var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo);
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);
SystemData.UnLockOutLocation(toLocation, dbContext);
if (wmsProductStock != null)
{
wmsProductStock.locationCode = item.endPointNo;

@ -309,6 +309,7 @@ namespace Khd.Core.Wcs.Wcs
taskType = 49,
qty = 1,
};
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wcsTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);

@ -19,7 +19,7 @@ namespace Khd.Core.Wcs.Wcs
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
int FloorNo { get; set; }
public SecondFloorPoint(IHost host,int floor)
public SecondFloorPoint(IHost host, int floor)
{
this._host = host;
FloorNo = floor;
@ -58,7 +58,6 @@ namespace Khd.Core.Wcs.Wcs
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
if (rfid != null && isSignal != null)
{
@ -72,9 +71,19 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.taskStatus == 5 && (wcsTask.nextPointId == 6 || wcsTask.nextPointId == 2))//入托盘入口,提升机任务是完成状态
{
object? agvPutValue = null;
try
{
agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
}
catch
{
}
if (wcsTask.taskType != 99)//不是人工任务
{
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)//小包入口要料
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any();
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0&&!hasTask)//小包入口要料
{
dbContext.WcsTask.Remove(wcsTask);//删除原本的任务
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
@ -98,7 +107,7 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid);
}
else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)
else
{
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);//二楼周转位
if (endEquip != null)
@ -131,7 +140,8 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.endPointId == 36)//目的地是小包入口
{
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any();
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0 && !hasTask)//小包入口要料
{
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
@ -155,7 +165,7 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid);
}
else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)
else
{
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null)
@ -306,7 +316,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (ex is PlcException)
{
}
else
{

@ -485,7 +485,6 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
{
if (item.taskStatus == 3)
{
@ -543,6 +542,10 @@ namespace Khd.Core.Wcs.Wcs
try
{
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).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);
SystemData.UnLockOutLocation(toLocation, dbContext);
if (wmsRawStock != null)
{
wmsRawStock.locationCode = item.endPointNo;
@ -608,6 +611,23 @@ namespace Khd.Core.Wcs.Wcs
warehouseFloor = 3,
warehouseId = 311
};
WmsRawInstock wmsRawInstock = new WmsRawInstock()
{
beginTime = System.DateTime.Now,
endTime = DateTime.Now,
locationCode = wmsBaseLocation.locationCode,
executeStatus = "2",
instockAmount = 1,
instockType = item.fromFloorNo == 1 ? "1" : "3",
materialBatchCode = mesBaseBarcodeInfo.barcodeInfo,
materialId = mesBaseBarcodeInfo.materialId,
operationType = "3",
palletInfoCode = mesBaseBarcodeInfo.palletInfoCode,
poNo = mesBaseBarcodeInfo.poNo,
warehouseId = 311
};
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wmsRawInstock);
dbContext.Add(wmsRawStock);
dbContext.Update(wmsBaseLocation);
dbContext.Remove(item);
@ -646,21 +666,23 @@ namespace Khd.Core.Wcs.Wcs
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == item.orderId);
if (wmsRawOutstock != null)
{
wmsRawOutstock.realOutstockAmount += 1;
WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == wmsRawOutstock.rawOutstockId && t.executeStatus == "1");
if (wmsRawOutstockDetail != null)
{
wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstockDetail.outstockTime = DateTime.Now;
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
if (wmsRawStock != null)
{
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31);
endEquip.emptyCount = 1;
wmsRawOutstock.realOutstockAmount += 1;
if (wmsRawOutstock.realOutstockAmount >= wmsRawOutstock.outstockAmount)
{
wmsRawOutstock.endTime = DateTime.Now;
wmsRawOutstock.executeStatus = "2";
}
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
dbContext.Update(endEquip);
dbContext.Update(wmsRawOutstock);
dbContext.Remove(wmsRawStock);

@ -59,7 +59,6 @@ namespace Khd.Core.Wcs.Wcs
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (rfid != null && isSignal != null)
{
if (Convert.ToInt32(isSignal) == 1)//托盘到位
{
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 1);
@ -138,6 +137,7 @@ namespace Khd.Core.Wcs.Wcs
newTask.taskType = 39;
newTask.useFlag = 1;
wmsBaseLocation.locationStatus = "2";
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
dbContext.Update(wmsBaseLocation);
dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);

@ -1948,7 +1948,7 @@
</StackPanel>
</TabItem>
<TabItem x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<TabItem Visibility="Collapsed" x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<StackPanel Height="1060" Width="1703" Background="#213269" Canvas.Left="175" Canvas.Top="110" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Width="1750">
<StackPanel Orientation="Vertical" Margin="20,5,0,0">
@ -1962,13 +1962,13 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="167*"/>
<RowDefinition Height="167*"/>
<RowDefinition Height="167*"/>
<RowDefinition Height="166.667"/>
<RowDefinition Height="167*"/>
<RowDefinition Height="167*"/>
<RowDefinition Height="83*"/>
<RowDefinition Height="152*"/>
<RowDefinition Height="152*"/>
<RowDefinition Height="152*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="152*"/>
<RowDefinition Height="152*"/>
<RowDefinition Height="75*"/>
</Grid.RowDefinitions>
<TextBlock Text="扫描退库" Foreground="White" FontSize="50" Grid.ColumnSpan="6" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="扫描料箱号:" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
@ -2014,7 +2014,10 @@
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="2" Grid.Column="4" Grid.RowSpan="2" Margin="20">
<TextBlock x:Name="OutOrder" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<StackPanel Orientation="Vertical" >
<TextBlock x:Name="OutOrder" 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"/>
</StackPanel>
</Border>
<Border BorderBrush="White" BorderThickness="2" Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="5" Grid.RowSpan="2" Margin="20">
<DataGrid Background="Transparent"
@ -2024,8 +2027,14 @@
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
x:Name="OutTaskNumber">
x:Name="OutTaskNumber" >
<DataGrid.Columns>
<DataGridTextColumn
Header="物料名称"
Binding="{Binding materiaName}"
ElementStyle="{StaticResource dgCell}"
Width="3*"
/>
<DataGridTextColumn
Header="物料描述"
Binding="{Binding materialSpec}"
@ -2050,7 +2059,7 @@
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
<DataGridTextColumn
Header="已出数量"
Binding="{Binding realOutstockAmount}"
@ -2101,8 +2110,8 @@
<TextBlock Text="待执行CTU任务数:" Visibility="Hidden" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="50"/>
<TextBlock x:Name="outTaskCount" Visibility="Hidden" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
<Button Content="执行CTU出库任务" Visibility="Hidden" Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Width="500" Height="100" FontSize="50" Background="#346DFF" Foreground="White" Click="ExecuteCtuTask_Click"/>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="6">
<TextBlock Text="扫描料箱号:" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
<Grid>

@ -98,6 +98,7 @@ namespace Khd.Core.Wpf.TaskForm
{
objid = FormBoardT._jcSnowId.NextId(),
taskType = 99,
containerNo = rfid,
currPointId = startEquip.Id,
currPointNo = startEquip.equipNo,
nextPointId = baseEquip.objid,

@ -48,7 +48,7 @@ namespace Khd.Core.Wpf.TaskForm
List<string> endStationCodes = SystemData.BaseEquip.Where(t => t.equipType == 10).Select(t => t.agvPositionCode).ToList();
using var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 11 && t.taskType == 30).Any();
var hasTask = dbContext.WcsTask.Where(t => (t.nextPointId == 11 && t.taskType == 30) || t.nextPointId == 10).Any();
if (!hasTask)
{
var wmsRawOutstocks = dbContext.WmsRawOutstock

Loading…
Cancel
Save