master
2 years ago
parent df44a56389
commit f33d9dfb2e

@ -63,6 +63,8 @@ namespace Khd.Core.Wcs.Global
public static List<WcsOutWareOrder> WcsOutWareOrder = new List<WcsOutWareOrder>(); public static List<WcsOutWareOrder> WcsOutWareOrder = new List<WcsOutWareOrder>();
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 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>();
public static JcSnowId SnowId = new JcSnowId(); public static JcSnowId SnowId = new JcSnowId();

@ -91,6 +91,7 @@ internal class Program
StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get<List<PlcConfig>>(); StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get<List<PlcConfig>>();
ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"]; ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"];
StaticData.DeleteLogDay= Convert.ToInt32(configuration["DeleteLogDays"] ?? "10");
} }
private static IHostBuilder CreateHostBuilder(string[] args) => private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)

@ -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) 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
@ -784,7 +784,7 @@ namespace Khd.Core.Wcs.Wcs
}; };
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
wmsProductInstock.executeStatus = "1"; wmsProductInstock.executeStatus = "1";
wmsBaseLocation.locationStatus = "4"; wmsBaseLocation.locationStatus = "2";
dbContext.Add(wmsProductInstockDetail); dbContext.Add(wmsProductInstockDetail);
dbContext.Update(wmsProductInstock); dbContext.Update(wmsProductInstock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
@ -1410,7 +1410,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsproStocks = proStock var wmsproStocks = proStock
.Where(t => t.productId == item.productId && t.saleOrderId == (item.saleOrderId == null ? 0 : item.saleOrderId) && t.warehouseId == item.warehouseId) .Where(t => t.productId == item.productId && t.saleOrderId == (item.saleOrderId == null ? 0 : item.saleOrderId) && t.warehouseId == item.warehouseId)
.Select(t => t.palletInfoCode) .Select(t => t.locationCode)
.ToList(); .ToList();
List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation
.Where(t => t.activeFlag == "1") .Where(t => t.activeFlag == "1")
@ -1420,7 +1420,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == item.warehouseId).ToList(); .Where(t => t.warehouseId == item.warehouseId).ToList();
var wmsBaseLocations = AllWmsBaseLocations var wmsBaseLocations = AllWmsBaseLocations
.Where(t => t.warehouseId == item.warehouseId) .Where(t => t.warehouseId == item.warehouseId)
.Where(t => wmsproStocks.Contains(t.containerCode)) .Where(t => wmsproStocks.Contains(t.locationCode))
.ToList(); .ToList();
decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty); decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty);
@ -1434,7 +1434,7 @@ namespace Khd.Core.Wcs.Wcs
var bill = from a in wmsBaseLocations var bill = from a in wmsBaseLocations
from b in proStock from b in proStock
where a.containerCode == b.palletInfoCode where a.locationCode == b.locationCode
select new { a, b }; select new { a, b };
WmsBaseLocation? location = null; WmsBaseLocation? location = null;
WmsProductStock? stock = null; WmsProductStock? stock = null;
@ -1447,7 +1447,7 @@ namespace Khd.Core.Wcs.Wcs
stock = b.b; stock = b.b;
WcsTask wcsTask; WcsTask wcsTask;
stock.updateDate = DateTime.Now; stock.updateDate = DateTime.Now;
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode); MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
if (mesBasePalletInfo != null) if (mesBasePalletInfo != null)
{ {
if (location.locDeep == 1)//如果是深库位 if (location.locDeep == 1)//如果是深库位
@ -1482,9 +1482,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.activeFlag == "1") .Where(t => t.activeFlag == "1")
.Where(t => t.delFlag == "0") .Where(t => t.delFlag == "0")
.Where(t => t.locationScrapType == "1") .Where(t => t.locationScrapType == "1")
.Where(t => t.locationStatus == "1") .Where(t => t.locationStatus == "1")
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId) .Where(t => t.warehouseId != location.locationId)
@ -1560,7 +1558,7 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId, orderId = item.productOutstockId,
taskType = 50, taskType = 50,
containerNo = location.containerCode, containerNo = stock.palletInfoCode,
createBy = "WCS", createBy = "WCS",
createTime = DateTime.Now, createTime = DateTime.Now,
taskStatus = 0, taskStatus = 0,

@ -290,14 +290,18 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1);
if (Convert.ToInt32(linesignal01Value) == 1) if (Convert.ToInt32(linesignal01Value) == 1)
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.currPointId == 1).Any(); var wcsTasks = dbContext.WcsTask.ToList();
var hasTask = wcsTasks.Where(t => t.nextPointId == 6 && (t.currPointId == 1 || t.endPointId == 1 && t.taskStatus < 5 && t.taskStatus >= 1)).Any();
if (hasTask) if (hasTask)
{ {
continue; continue;
} }
//判断task表里没有该rfid的未完成的入库 //判断task表里没有该rfid的未完成的入库
//信息,未下发去向 //信息,未下发去向
var task = dbContext.WcsTask.Where(t => t.IsDelete == 0 || t.IsDelete == null).Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault(); var task = wcsTasks.Where(t => t.IsDelete == 0 || t.IsDelete == null)
.Where(t => t.nextPointId == 1)
.OrderBy(t => t.createTime).FirstOrDefault();
if (task == null) if (task == null)
{ {
if (BigContainerCodes.Contains(RFID001Value)) if (BigContainerCodes.Contains(RFID001Value))

@ -114,7 +114,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
_logger.Info("五楼Agv下发任务成功" + message); _logger.Info("五楼Agv下发任务成功" + message);
Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功" + item.containerNo + "," + nextEquip.agvPositionCode); Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功" + item.currPointNo + "," + nextEquip.agvPositionCode);
item.taskCode = reponseMessage.data; item.taskCode = reponseMessage.data;
item.taskStatus = 1; item.taskStatus = 1;
lineEquip.equipStatus = 1; lineEquip.equipStatus = 1;
@ -427,20 +427,30 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault(); var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
if (wmsRawStock != null) if (wmsRawStock != null)
{ {
wmsRawStock.locationCode = item.currPointNo; wmsRawStock.locationCode = item.endPointNo;
dbContext.Update(wmsRawStock); dbContext.Update(wmsRawStock);
} }
else 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)
{ {
wmsProductStock.locationCode = item.currPointNo; wmsProductStock.locationCode = item.endPointNo;
dbContext.Update(wmsProductStock); dbContext.Update(wmsProductStock);
} }
else
{
continue;
} }
}
else
{
continue;
}
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
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",
locationStatus = "1", locationStatus = "1",
containerCode = null, containerCode = null,
updateTime = DateTime.Now updateTime = DateTime.Now
@ -448,6 +458,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,
containerCode = item.containerNo, containerCode = item.containerNo,
updateTime = DateTime.Now updateTime = DateTime.Now
}); });
@ -517,9 +528,9 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstock.executeStatus = "2"; wmsRawOutstock.executeStatus = "2";
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
wmsBaseLocation.returnFlag = "0";
wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = null; wmsBaseLocation.containerCode = null;
wmsBaseLocation.returnFlag = "0";
wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsRawOutstock); dbContext.Update(wmsRawOutstock);
@ -543,7 +554,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateBy = "WCS";
var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault(); var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
var wmsProductInstock = dbContext.WmsProductInstock var wmsProductInstock = dbContext.WmsProductInstock
.Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseFloor == 5) .Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseId == 521)
.FirstOrDefault(); .FirstOrDefault();
if (mesBasePalletInfo != null && wmsProductInstock != null) if (mesBasePalletInfo != null && wmsProductInstock != null)
{ {
@ -626,10 +637,10 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info("五楼Agv完成任务成功" + item.ToJsonString()); _logger.Info("五楼Agv完成任务成功" + item.ToJsonString());
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.returnFlag = "1";
wmsBaseLocation.containerCode = item.containerNo; wmsBaseLocation.containerCode = item.containerNo;
wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.returnFlag = "1";
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo); MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo);
if (mesBasePalletInfo != null) if (mesBasePalletInfo != null)
{ {
@ -705,12 +716,13 @@ namespace Khd.Core.Wcs.Wcs
materialId = mesBasePalletInfo.materialId, materialId = mesBasePalletInfo.materialId,
qualityStatus = "0", qualityStatus = "0",
rawStockId = StaticData.SnowId.NextId(), rawStockId = StaticData.SnowId.NextId(),
completeFlag = "1", completeFlag = item.fromFloorNo==4?"0":"1",
instockBatch = mesBaseBarcodeInfo.barcodeInfo, instockBatch = mesBaseBarcodeInfo.barcodeInfo,
updateBy = "WCS", updateBy = "WCS",
updateDate = DateTime.Now, updateDate = DateTime.Now,
warehouseId = 511, warehouseId = 511,
}; };
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;
dbContext.Update(lineEquip); dbContext.Update(lineEquip);

@ -103,9 +103,8 @@ 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) on a.palletInfoCode equals b.containerCode join b in wmsBaseLocations.Where(t => t.locDeep == 1 && wcsTask.fromFloorNo == 4 ? t.returnFlag == "1" : t.returnFlag == "0") on a.palletInfoCode equals b.containerCode
select new { b };//等于当前任务的物料的托盘的库位信息 select new { b };//等于当前任务的物料的托盘的库位信息
var outBill = from a in bill var outBill = from a in bill
from b in wmsBaseLocations from b in wmsBaseLocations
where b.locDeep == 2 where b.locDeep == 2

@ -489,8 +489,7 @@ namespace Khd.Core.Wcs.Wcs
if (item.currPointId == lineEquip.objid) if (item.currPointId == lineEquip.objid)
{ {
var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress); var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress);
var rfid = StaticData.PlcDic[0].ReadRFID(StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002").plcpointAddress); if (lineSignal02 != null && lineSignal02.ToString() == "1")
if (lineSignal02 != null && rfid != null && rfid == item.containerNo && lineSignal02.ToString() == "1")
{ {
var agvTask = new RequestAGVTaskDto var agvTask = new RequestAGVTaskDto
{ {
@ -743,7 +742,7 @@ namespace Khd.Core.Wcs.Wcs
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)
{ {
wmsProductStock.locationCode = item.currPointNo; wmsProductStock.locationCode = item.endPointNo;
dbContext.Update(wmsProductStock); dbContext.Update(wmsProductStock);
} }
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
@ -755,7 +754,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",
containerCode = item.containerNo, containerCode = item.endPointNo,
updateTime = DateTime.Now updateTime = DateTime.Now
}); });
dbContext.Remove(item); dbContext.Remove(item);

@ -18,9 +18,6 @@ namespace Khd.Core.Wcs.Wcs
{ {
private readonly LoggerUtils _logger = new LoggerUtils(); private readonly LoggerUtils _logger = new LoggerUtils();
private readonly IHost host; private readonly IHost host;
private Plc.S7.Plc Plc30 = StaticData.PlcDic[0];
private Plc.S7.Plc Plc31 = StaticData.PlcDic[1];
private Plc.S7.Plc Plc220 = StaticData.PlcDic[2];
public SystemTimer(IHost host) public SystemTimer(IHost host)
{ {
@ -73,6 +70,10 @@ namespace Khd.Core.Wcs.Wcs
Console.WriteLine($"{DateTime.Now}: SystemTimer started"); Console.WriteLine($"{DateTime.Now}: SystemTimer started");
} }
/// <summary>
/// 定时清除日志文件
/// </summary>
/// <param name="obj"></param>
private void DeleteLogsLogic(object? obj) private void DeleteLogsLogic(object? obj)
{ {
while (true) while (true)
@ -89,7 +90,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (DateTime.TryParse(dirName, out DateTime dt)) if (DateTime.TryParse(dirName, out DateTime dt))
{ {
if (dt < DateTime.Now.AddDays(-5)) if (dt < DateTime.Now.AddDays(-StaticData.DeleteLogDay))
{ {
Directory.Delete(s, true); Directory.Delete(s, true);
_logger.Info($"日志{dirName}已删除"); _logger.Info($"日志{dirName}已删除");
@ -107,6 +108,10 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
/// <summary>
/// 删除任务
/// </summary>
/// <param name="obj"></param>
private void DeleteTaskLogic(object? obj) private void DeleteTaskLogic(object? obj)
{ {
using var scope = host.Services.CreateScope(); using var scope = host.Services.CreateScope();
@ -432,11 +437,11 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(cardStatus); dbContext.Update(cardStatus);
dbContext.SaveChanges(); dbContext.SaveChanges();
var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));
this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type);
var XPlc = basePlcs.First(t => t.Name.Contains('X')); var XPlc = basePlcs.First(t => t.Name.Contains('X'));
var Ylc = basePlcs.First(t => t.Name.Contains('Y')); var Ylc = basePlcs.First(t => t.Name.Contains('Y'));
this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosY.ToString(), XPlc.type); StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosY.ToString(), XPlc.type);
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
} }
} }
catch catch
@ -472,11 +477,11 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(cardStatus); dbContext.Update(cardStatus);
dbContext.SaveChanges(); dbContext.SaveChanges();
var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));
this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type);
var XPlc = basePlcs.First(t => t.Name.Contains('X')); var XPlc = basePlcs.First(t => t.Name.Contains('X'));
var Ylc = basePlcs.First(t => t.Name.Contains('Y')); var Ylc = basePlcs.First(t => t.Name.Contains('Y'));
this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type);
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
} }
} }
catch catch
@ -502,21 +507,21 @@ namespace Khd.Core.Wcs.Wcs
{ {
WcsCmd wcsCmd = wcsCmds.First(); WcsCmd wcsCmd = wcsCmds.First();
var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First();
Plc220.WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type);
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc;
Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type);
} }
else else
{ {
var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First();
this.Plc220.WriteToPoint(endPlc.Address, "0", endPlc.type); StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type);
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type);
} }
var data = new var data = new
{ {
@ -529,31 +534,31 @@ namespace Khd.Core.Wcs.Wcs
{ {
var cardStatus = reponse.data.First(t => t.RobotCode == "2034"); var cardStatus = reponse.data.First(t => t.RobotCode == "2034");
var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));
this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type);
var XPlc = basePlcs.First(t => t.Name.Contains('X')); var XPlc = basePlcs.First(t => t.Name.Contains('X'));
var Ylc = basePlcs.First(t => t.Name.Contains('Y')); var Ylc = basePlcs.First(t => t.Name.Contains('Y'));
this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type);
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList(); basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList();
cardStatus = reponse.data.First(t => t.RobotCode == "6011"); cardStatus = reponse.data.First(t => t.RobotCode == "6011");
quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));
this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type);
XPlc = basePlcs.First(t => t.Name.Contains('X')); XPlc = basePlcs.First(t => t.Name.Contains('X'));
Ylc = basePlcs.First(t => t.Name.Contains('Y')); Ylc = basePlcs.First(t => t.Name.Contains('Y'));
this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type);
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList(); basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList();
cardStatus = reponse.data.First(t => t.RobotCode == "8161"); cardStatus = reponse.data.First(t => t.RobotCode == "8161");
quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); quantityPlc = basePlcs.First(t => t.Name.Contains("电量"));
this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type);
XPlc = basePlcs.First(t => t.Name.Contains("X")); XPlc = basePlcs.First(t => t.Name.Contains("X"));
Ylc = basePlcs.First(t => t.Name.Contains("Y")); Ylc = basePlcs.First(t => t.Name.Contains("Y"));
this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type);
this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
} }
} }
@ -573,21 +578,21 @@ namespace Khd.Core.Wcs.Wcs
{ {
WcsCmd wcsCmd = wcsCmds.First(); WcsCmd wcsCmd = wcsCmds.First();
var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First();
Plc220.WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type);
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc;
Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type);
} }
else else
{ {
var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First();
this.Plc220.WriteToPoint(endPlc.Address, "0", endPlc.type); StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type);
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type);
} }
} }
@ -625,13 +630,13 @@ namespace Khd.Core.Wcs.Wcs
var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList();
for (int i = 0; i < endPlcs.Count; i++) for (int i = 0; i < endPlcs.Count; i++)
{ {
this.Plc220.WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type); StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type);
} }
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc;
Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type);
} }
else else
@ -639,12 +644,12 @@ namespace Khd.Core.Wcs.Wcs
var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList();
for (int i = 0; i < endPlcs.Count; i++) for (int i = 0; i < endPlcs.Count; i++)
{ {
this.Plc220.WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type); StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type);
} }
var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); var startPlc = basePlcs.First(t => t.Name.Contains("起始点"));
Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type);
var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号"));
Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type);
} }
} }
@ -663,27 +668,27 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (item.a.plcpointNo.Contains("RFID")) if (item.a.plcpointNo.Contains("RFID"))
{ {
string? rfid = Plc31.ReadRFID(item.a.plcpointAddress); string? rfid = StaticData.PlcDic[1].ReadRFID(item.a.plcpointAddress);
if (!string.IsNullOrEmpty(rfid)) if (!string.IsNullOrEmpty(rfid))
{ {
rfid = rfid[(rfid.IndexOf("C") + 1)..]; rfid = rfid[(rfid.IndexOf("C") + 1)..];
Plc220.WriteToPoint(item.b.Address, rfid, item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type);
} }
else else
{ {
Plc220.WriteToPoint(item.b.Address, "0", item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type);
} }
} }
else else
{ {
var value = Plc31.Read(item.a.plcpointAddress); var value = StaticData.PlcDic[1].Read(item.a.plcpointAddress);
if (value != null && !string.IsNullOrEmpty(value.ToString())) if (value != null && !string.IsNullOrEmpty(value.ToString()))
{ {
Plc220.WriteToPoint(item.b.Address, value.ToString(), item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type);
} }
else else
{ {
Plc220.WriteToPoint(item.b.Address, "0", item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type);
} }
} }
} }
@ -705,27 +710,27 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (item.a.plcpointNo.Contains("RFID")) if (item.a.plcpointNo.Contains("RFID"))
{ {
string? rfid = Plc30.ReadRFID(item.a.plcpointAddress); string? rfid = StaticData.PlcDic[0].ReadRFID(item.a.plcpointAddress);
if (!string.IsNullOrEmpty(rfid)) if (!string.IsNullOrEmpty(rfid))
{ {
rfid = rfid[(rfid.IndexOf("JYHB") + 4)..]; rfid = rfid[(rfid.IndexOf("JYHB") + 4)..];
Plc220.WriteToPoint(item.b.Address, rfid, item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type);
} }
else else
{ {
Plc220.WriteToPoint(item.b.Address, "0", item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type);
} }
} }
else else
{ {
var value = Plc30.Read(item.a.plcpointAddress); var value = StaticData.PlcDic[0].Read(item.a.plcpointAddress);
if (value != null && !string.IsNullOrEmpty(value.ToString())) if (value != null && !string.IsNullOrEmpty(value.ToString()))
{ {
Plc220.WriteToPoint(item.b.Address, value.ToString(), item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type);
} }
else else
{ {
Plc220.WriteToPoint(item.b.Address, "0", item.b.type); StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type);
} }
} }
} }

@ -545,7 +545,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault();
if (wmsRawStock != null) if (wmsRawStock != null)
{ {
wmsRawStock.locationCode = item.currPointNo; wmsRawStock.locationCode = item.endPointNo;
dbContext.Update(wmsRawStock); dbContext.Update(wmsRawStock);
} }
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation

@ -5,6 +5,7 @@
//"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"DeleteLogDays": 10,//
"PlcConfigs": [ "PlcConfigs": [
{ {
"IP": "192.168.2.30", "IP": "192.168.2.30",

@ -1945,6 +1945,49 @@
</StackPanel> </StackPanel>
</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">
<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">
<Grid Width="1650" Height="1000">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<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*"/>
</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"/>
<TextBlock Text="扫描条码号:" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
<TextBlock Text="退库数量:" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>
<hc:TextBox x:Name="txtReturnBox" hc:InfoElement.ShowClearButton="True" FontSize="50" LostFocus="txtInBox_TextChanged" Width="700" HorizontalAlignment="Left" VerticalAlignment="Center" Height="130" Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="3"/>
<Button Click="barClear_Click" HorizontalAlignment="Right" Height="100" Panel.ZIndex="1" Width="100" Margin="0,0,130,0" Grid.Column="5" Grid.Row="2">
<Image Source="..\Resources\cancel.png"/>
</Button>
<Button Click="boxClear_Click" HorizontalAlignment="Right" Height="100" Panel.ZIndex="1" Width="100" Margin="0,0,130,0" Grid.Column="5" Grid.Row="1">
<Image Source="..\Resources\cancel.png"/>
</Button>
<hc:TextBox x:Name="txtReturnBarCode" hc:InfoElement.ShowClearButton="True" FontSize="50" LostFocus="txtInBarCode_TextChanged" Width="700" HorizontalAlignment="Left" VerticalAlignment="Center" Height="130" Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="3"/>
<hc:TextBox x:Name="txtReturnScan" FontSize="50" IsReadOnly="True" Width="700" HorizontalAlignment="Left" VerticalAlignment="Center" Height="130" Grid.Row="3" Grid.Column="3" Grid.ColumnSpan="3" />
<Button Content="确认退库" Grid.Row="4" Grid.ColumnSpan="6" Width="500" Height="100" FontSize="50" Background="#346DFF" Foreground="White" Click="ReturnRawBaseLocaltion_Click"/>
<Button Content="一键收料" Grid.Row="5" Grid.ColumnSpan="6" Width="500" Height="100" FontSize="50" Background="#346DFF" Foreground="White" Click="callPlc_Click"/>
<Button Content="执行CTU入库任务" Visibility="Hidden" Click="btnCtuInConfirmBox_Click" Grid.Row="5" Grid.ColumnSpan="6" Width="500" Height="100" FontSize="50" Background="#346DFF" Foreground="White"/>
</Grid>
</StackPanel>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem x:Name="ScanOutManager" Header="扫描出库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5"> <TabItem x:Name="ScanOutManager" 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">

@ -284,7 +284,7 @@ namespace Khd.Core.Wpf.Form
List<string> list = wmsRawOutstocks.Select(t => t.endStationCode).ToList(); List<string> list = wmsRawOutstocks.Select(t => t.endStationCode).ToList();
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
this.OutOrder.Text = "待出库单:\n" + list.Join("\n"); this.OutOrder.Text = "待出库单:\n" + list.Distinct().Join("\n");
}); });
var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10); var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
@ -1527,7 +1527,91 @@ namespace Khd.Core.Wpf.Form
LogManager.Error(ex); LogManager.Error(ex);
MessageBox.Show("入库失败"); MessageBox.Show("入库失败");
} }
//20240717102819RB045 }
/// <summary>
/// 入库扫描
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ReturnRawBaseLocaltion_Click(object sender, RoutedEventArgs e)
{
try
{
if (!string.IsNullOrEmpty(txtInBox.Text) && !string.IsNullOrEmpty(txtInBarCode.Text))
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
WmsRawReturn? wmsRawReturn = dbContext.WmsRawReturn.Where(t => t.executeStatus == "1").FirstOrDefault();
if (wmsRawReturn == null)
{
MessageBox.Show("未查询到退库任务!");
return;
}
var material = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtInBarCode.Text);
var container = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == txtInBox.Text && t.warehouseId == 512);
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock
.Where(t => txtInBarCode.Text == t.instockBatch)
.Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList();
if (wmsRawStocks.Count > 0)
{
MessageBox.Show($"该条码已入库!料箱号为{wmsRawStocks.First().palletInfoCode},库位号为{wmsRawStocks.First().locationCode}");
txtInBarCode.Text = string.Empty;
txtInScan.Text = string.Empty;
return;
}
if (container == null)
{
MessageBox.Show("未查询到该容器!");
txtInBox.Text = string.Empty;
return;
}
if (material == null)
{
MessageBox.Show("未查询到该条码内容!");
txtInBarCode.Text = string.Empty;
txtInScan.Text = string.Empty;
return;
}
var newRawStock = new WmsRawStock()
{
materialId = material.materialId,
supplierId = material.manufacturerId,
instockBatch = txtInBarCode.Text,
locationCode = container.locationCode,
stockType = "1",
palletInfoCode = container.containerCode,
totalAmount = material.batchFlag == "1" ? material.amount : 1,
activeFlag = "1",
occupyAmount = 0,
completeFlag = "1",
frozenAmount = 0,
instockDate = System.DateTime.Now,
rawStockId = Global.SnowId.NextId(),
saleOrderId = material.saleOrderId == null ? 0 : material.saleOrderId,
warehouseFloor = 5,
warehouseId = 512,
createBy = "扫描退库",
createDate = System.DateTime.Now,
safeFlag = material.safeFlag
};
dbContext.WmsRawStock.Add(newRawStock);
dbContext.SaveChanges();
MessageBox.Show("入库成功!");
txtInBarCode.Text = string.Empty;
txtInScan.Text = string.Empty;
txtInBarCode.Focus();
}
else
{
MessageBox.Show("请先扫描容器号和条码!");
}
}
catch (Exception ex)
{
LogManager.Error(ex);
MessageBox.Show("入库失败");
}
} }
/// <summary> /// <summary>
/// 入库容器改变 /// 入库容器改变
@ -2374,6 +2458,11 @@ namespace Khd.Core.Wpf.Form
var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress); var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress);
if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 1) if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 1)
{ {
if (!ReadEmptyLocation())
{
MessageBox.Show("有任务正在执行");
return;
}
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40);
@ -2415,6 +2504,11 @@ namespace Khd.Core.Wpf.Form
var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress); var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress);
if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 0) if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 0)
{ {
if (!ReadEmptyLocation())
{
MessageBox.Show("有任务正在执行");
return;
}
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40);
@ -2460,6 +2554,11 @@ namespace Khd.Core.Wpf.Form
emptyCount.ShowDialog(); emptyCount.ShowDialog();
if (EmptyCountForm.IsSelect) if (EmptyCountForm.IsSelect)
{ {
if (!ReadEmptyLocation())
{
MessageBox.Show("有任务正在执行");
return;
}
int emptyTaskCount = EmptyCountForm.EmptyTaskCount; int emptyTaskCount = EmptyCountForm.EmptyTaskCount;
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
@ -2499,6 +2598,11 @@ namespace Khd.Core.Wpf.Form
{ {
try try
{ {
if (!ReadEmptyLocation())
{
MessageBox.Show("有任务正在执行");
return;
}
BasePlcpoint lineSignal = SystemData.BasePlcpoints.First(t => t.plcpointNo == "linesignal01"); BasePlcpoint lineSignal = SystemData.BasePlcpoints.First(t => t.plcpointNo == "linesignal01");
var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress); var lineSignalValue = SystemData.PlcDic[0].Read(lineSignal.plcpointAddress);
if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 0) if (lineSignalValue != null && Convert.ToInt32(lineSignalValue) == 0)
@ -2543,7 +2647,7 @@ namespace Khd.Core.Wpf.Form
{ {
try try
{ {
lock (updateLock) //lock (updateLock)
{ {
EmptyCountForm emptyCountForm = new EmptyCountForm(0, 10); EmptyCountForm emptyCountForm = new EmptyCountForm(0, 10);
emptyCountForm.ShowDialog(); emptyCountForm.ShowDialog();

Loading…
Cancel
Save