add-合并冲突

master
liuwf 2 years ago
commit 2351c2cd21

@ -64,7 +64,7 @@ namespace Khd.Core.Wcs.Global
public static List<BasePlc> basePlcs = new List<BasePlc>(); public static List<BasePlc> basePlcs = new List<BasePlc>();
public static List<PlcConfig> PlcConfigs { get; set; } public static List<PlcConfig> PlcConfigs { get; set; }
public static int DeleteLogDay { get; internal 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, Dictionary<string, PlcPoint>> PlcPoints = new Dictionary<int, Dictionary<string, PlcPoint>>();
public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>(); 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 thirdFloorAGV = new(_host, ThirdFloorAgvEquip.floorNo.Value);
thirdFloorAGV.StartPoint(); thirdFloorAGV.StartPoint();
//四楼接驳位
FourthFloorPoint fourthFloorPoint = new FourthFloorPoint(_host, 4);
fourthFloorPoint.StartPoint();
//五层接驳位 //五层接驳位
var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
FiveFloorPoint fifthFloorPoint = new(_host, FifthBaseFloorEquip.floorNo.Value); 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 namespace Khd.Core.Wcs
{ {
@ -28,5 +29,40 @@ namespace Khd.Core.Wcs
} }
public static object outStockLock = new object(); 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();//深库位的托盘的物料等于当前任务的物料 .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
var bill = from a in mesBasePalletInfos 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 };//等于当前任务的物料的托盘的库位信息 select new { b };//等于当前任务的物料的托盘的库位信息
var outBill = from a in bill var outBill = from a in bill
@ -400,7 +400,7 @@ namespace Khd.Core.Wcs.Wcs
select new { a, b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 select new { a, b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
WmsBaseLocation? wmsBaseLocation = null; 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(t => t.locDeep == 1);//找不到再找深库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => !cannotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => !cannotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
//深浅库位问题?库位入库优先级等 //深浅库位问题?库位入库优先级等
@ -462,6 +462,7 @@ namespace Khd.Core.Wcs.Wcs
rawInstockId = wmsRawInstock.rawInstockId, rawInstockId = wmsRawInstock.rawInstockId,
taskCode = wmsRawInstock.taskCode, taskCode = wmsRawInstock.taskCode,
}; };
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
dbContext.Add(wmsRawInstockDetail); dbContext.Add(wmsRawInstockDetail);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.Add(newTask); dbContext.Add(newTask);
@ -502,6 +503,9 @@ namespace Khd.Core.Wcs.Wcs
{ {
WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9 || t.nextPointId == 8).OrderBy(t => t.createBy).FirstOrDefault(); WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9 || t.nextPointId == 8).OrderBy(t => t.createBy).FirstOrDefault();
if (wcsTaskManual != null) if (wcsTaskManual != null)
{
var equip = dbContext.BaseEquip.Where(t => t.objid == wcsTaskManual.endPointId).FirstOrDefault();
if (equip != null && equip.equipStatus == 0)
{ {
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsTaskManual); WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsTaskManual);
wcsTask.createTime = DateTime.Now; wcsTask.createTime = DateTime.Now;
@ -513,6 +517,7 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
_logger.Error(ex.Message + "\n" + ex.StackTrace); _logger.Error(ex.Message + "\n" + ex.StackTrace);
@ -735,7 +740,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationScrapType == "1") .Where(t => t.locationScrapType == "1")
.Where(t => t.locationStatus == "1") .Where(t => t.locationStatus == "1")
.Where(t => t.containerCode == null) .Where(t => t.containerCode == null)
.Where(t=>t.warehouseId==521) .Where(t => t.warehouseId == 521)
.OrderByDescending(t => t.locColumn) .OrderByDescending(t => t.locColumn)
.FirstOrDefault(); .FirstOrDefault();
if (wmsBaseLocation != null) if (wmsBaseLocation != null)
@ -956,6 +961,8 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = 1 qty = 1
}; };
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(fromBaseLocation, dbContext);
toLocation.locationStatus = "4"; toLocation.locationStatus = "4";
toLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
@ -1034,6 +1041,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = 1 qty = 1
}; };
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
wmsBaseLocation.locationStatus = "6"; wmsBaseLocation.locationStatus = "6";
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.Add(wmsRawOutstockDetail); dbContext.Add(wmsRawOutstockDetail);
@ -1278,6 +1286,9 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = 1 qty = 1
}; };
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
toLocation.locationStatus = "4"; toLocation.locationStatus = "4";
toLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
@ -1345,6 +1356,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = 1 qty = 1
}; };
SystemData.LockOutLocation(location, dbContext);
location.locationStatus = "6"; location.locationStatus = "6";
location.updateBy = "WCS"; location.updateBy = "WCS";
location.updateTime = DateTime.Now; location.updateTime = DateTime.Now;
@ -1523,6 +1535,8 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = 1 qty = 1
}; };
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
toLocation.locationStatus = "4"; toLocation.locationStatus = "4";
toLocation.updateBy = "WCS"; toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now; toLocation.updateTime = DateTime.Now;
@ -1589,6 +1603,7 @@ namespace Khd.Core.Wcs.Wcs
productOutstockDetailId = StaticData.SnowId.NextId(), productOutstockDetailId = StaticData.SnowId.NextId(),
productBarcode = mesBasePalletInfo.materialBarcode, productBarcode = mesBasePalletInfo.materialBarcode,
}; };
SystemData.LockOutLocation(location, dbContext);
location.locationStatus = "6"; location.locationStatus = "6";
location.updateBy = "WCS"; location.updateBy = "WCS";
location.updateTime = DateTime.Now; location.updateTime = DateTime.Now;
@ -1808,6 +1823,10 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10); BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode)) if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode))
{ {
if (item.endStationCode != endStationCodeEquip.endStationCode)
{
continue;
}
bool CreateSuccess = false; bool CreateSuccess = false;
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 11).Any(); bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 11).Any();
if (!hasTask) if (!hasTask)
@ -1972,7 +1991,7 @@ namespace Khd.Core.Wcs.Wcs
} }
BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21); BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10); 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(); hasTask = dbContext.WcsTask.Where(t => t.taskType == 32).Any();
if (!hasTask) if (!hasTask)
{ {
@ -2002,6 +2021,8 @@ namespace Khd.Core.Wcs.Wcs
fromFloorNo = 5, fromFloorNo = 5,
}; };
dbContext.Add(bearAgvTask); dbContext.Add(bearAgvTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(bearAgvTask);
dbContext.Add(wcsTaskLog);
} }
if (item.beginTime == null) if (item.beginTime == null)
@ -2195,6 +2216,7 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1, useFlag = 1,
qty = qty qty = qty
}; };
//location是出库的库位mesBaseBarcodeInfo是条码信息表数据item是出库申请单
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail() WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
{ {
rawOutstockDetailId = StaticData.SnowId.NextId(), rawOutstockDetailId = StaticData.SnowId.NextId(),
@ -2220,6 +2242,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
item.beginTime = DateTime.Now; item.beginTime = DateTime.Now;
} }
SystemData.LockOutLocation(location, dbContext);
dbContext.Add(wmsProductOutstockDetail); dbContext.Add(wmsProductOutstockDetail);
location.locationStatus = "6"; location.locationStatus = "6";
location.updateBy = "WCS"; location.updateBy = "WCS";

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

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

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

@ -21,7 +21,7 @@ namespace Khd.Core.Wcs.Wcs
private readonly IHost _host; private readonly IHost _host;
private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal; private readonly BasePlcpoint LineSignal;
public FourthFloorPoint(int floor, Plc.S7.Plc plc, IHost host) public FourthFloorPoint( IHost host,int floor)
{ {
Floor = floor; Floor = floor;
this._host = host; this._host = host;
@ -35,6 +35,7 @@ namespace Khd.Core.Wcs.Wcs
MonitorInLocatorPointThread.IsBackground = true; MonitorInLocatorPointThread.IsBackground = true;
MonitorInLocatorPointThread.Name = "FourthFloorPoint"; MonitorInLocatorPointThread.Name = "FourthFloorPoint";
MonitorInLocatorPointThread.Start(); MonitorInLocatorPointThread.Start();
Console.WriteLine($"{DateTime.Now}:四楼接驳位线程开始");
} }
private void MonitorInLocatorPoint() private void MonitorInLocatorPoint()
@ -59,13 +60,36 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (wcsTask.taskStatus == 5)//提升机上来的 if (wcsTask.taskStatus == 5)//提升机上来的
{ {
//清除托盘信息
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.Remove(wcsTask);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
}
else else
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.currPointId == 4 || (t.endPointId == 4 && t.taskStatus > 0)).Any(); 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 lineEquip = StaticData.BaseEquip.First(t => t.objid == 4);
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.objid == 6); BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.objid == 6);
if (!hasTask) if (!hasTask)

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

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

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

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

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

@ -1948,7 +1948,7 @@
</StackPanel> </StackPanel>
</TabItem> </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 Height="1060" Width="1703" Background="#213269" Canvas.Left="175" Canvas.Top="110" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Width="1750"> <StackPanel Orientation="Horizontal" Width="1750">
<StackPanel Orientation="Vertical" Margin="20,5,0,0"> <StackPanel Orientation="Vertical" Margin="20,5,0,0">
@ -1962,13 +1962,13 @@
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="167*"/> <RowDefinition Height="152*"/>
<RowDefinition Height="167*"/> <RowDefinition Height="152*"/>
<RowDefinition Height="167*"/> <RowDefinition Height="152*"/>
<RowDefinition Height="166.667"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="167*"/> <RowDefinition Height="152*"/>
<RowDefinition Height="167*"/> <RowDefinition Height="152*"/>
<RowDefinition Height="83*"/> <RowDefinition Height="75*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Text="扫描退库" Foreground="White" FontSize="50" Grid.ColumnSpan="6" HorizontalAlignment="Center" VerticalAlignment="Center"/> <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"/> <TextBlock Text="扫描料箱号:" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
@ -2014,7 +2014,10 @@
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="2" Grid.Column="4" Grid.RowSpan="2" Margin="20"> <Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="2" Grid.Column="4" Grid.RowSpan="2" Margin="20">
<StackPanel Orientation="Vertical" >
<TextBlock x:Name="OutOrder" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center"/> <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>
<Border BorderBrush="White" BorderThickness="2" Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="5" Grid.RowSpan="2" Margin="20"> <Border BorderBrush="White" BorderThickness="2" Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="5" Grid.RowSpan="2" Margin="20">
<DataGrid Background="Transparent" <DataGrid Background="Transparent"
@ -2024,8 +2027,14 @@
CanUserDeleteRows="False" CanUserDeleteRows="False"
CanUserReorderColumns="False" CanUserReorderColumns="False"
CanUserResizeColumns="False" CanUserResizeColumns="False"
x:Name="OutTaskNumber"> x:Name="OutTaskNumber" >
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn
Header="物料名称"
Binding="{Binding materiaName}"
ElementStyle="{StaticResource dgCell}"
Width="3*"
/>
<DataGridTextColumn <DataGridTextColumn
Header="物料描述" Header="物料描述"
Binding="{Binding materialSpec}" Binding="{Binding materialSpec}"

@ -98,6 +98,7 @@ namespace Khd.Core.Wpf.TaskForm
{ {
objid = FormBoardT._jcSnowId.NextId(), objid = FormBoardT._jcSnowId.NextId(),
taskType = 99, taskType = 99,
containerNo = rfid,
currPointId = startEquip.Id, currPointId = startEquip.Id,
currPointNo = startEquip.equipNo, currPointNo = startEquip.equipNo,
nextPointId = baseEquip.objid, 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(); List<string> endStationCodes = SystemData.BaseEquip.Where(t => t.equipType == 10).Select(t => t.agvPositionCode).ToList();
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); 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) if (!hasTask)
{ {
var wmsRawOutstocks = dbContext.WmsRawOutstock var wmsRawOutstocks = dbContext.WmsRawOutstock

Loading…
Cancel
Save