diff --git a/src/Khd.Core.Domain/Models/BaseEquip.cs b/src/Khd.Core.Domain/Models/BaseEquip.cs
index 1d9f397..b878674 100644
--- a/src/Khd.Core.Domain/Models/BaseEquip.cs
+++ b/src/Khd.Core.Domain/Models/BaseEquip.cs
@@ -18,7 +18,7 @@ namespace Khd.Core.Domain.Models
public class BaseEquip
{
[Column("empty_count")]
- public int? emptyCount;
+ public int? emptyCount { get; set; }
[Column("agv_position_code")]
public string agvPositionCode { get; set; }
diff --git a/src/Khd.Core.Domain/Models/BasePlc.cs b/src/Khd.Core.Domain/Models/BasePlc.cs
index f149b20..08f49ea 100644
--- a/src/Khd.Core.Domain/Models/BasePlc.cs
+++ b/src/Khd.Core.Domain/Models/BasePlc.cs
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace Khd.Core.Domain.Models
{
- [Table("base_plcpoint")]
+ [Table("wcs_plcpoint")]
public class BasePlc
{
[Column("id")]
diff --git a/src/Khd.Core.Domain/Models/WcsTask.cs b/src/Khd.Core.Domain/Models/WcsTask.cs
index a18b735..6ab1b5a 100644
--- a/src/Khd.Core.Domain/Models/WcsTask.cs
+++ b/src/Khd.Core.Domain/Models/WcsTask.cs
@@ -186,21 +186,30 @@ namespace Khd.Core.Domain.Models
///
/// 备用字段1
///
- [Column("ud1")]
- public string ud1 { get; set; }
+ [Column("ctu_execute")]
+ public string CTUExecute { get; set; }
///
/// 备用字段2
///
- [Column("ud2")]
- public string ud2 { get; set; }
+ [Column("is_empty")]
+ public string isEmpty { get; set; }
///
/// 备用字段3
///
[Column("ud3")]
public string ud3 { get; set; }
-
+ ///
+ /// 备用字段3
+ ///
+ [Column("ud1")]
+ public string ud1 { get; set; }
+ ///
+ /// 备用字段3
+ ///
+ [Column("ud2")]
+ public string ud2 { get; set; }
///
/// 备注
///
diff --git a/src/Khd.Core.Domain/Models/WcsTaskLog.cs b/src/Khd.Core.Domain/Models/WcsTaskLog.cs
index ed6c08f..8dd61de 100644
--- a/src/Khd.Core.Domain/Models/WcsTaskLog.cs
+++ b/src/Khd.Core.Domain/Models/WcsTaskLog.cs
@@ -186,21 +186,30 @@ namespace Khd.Core.Domain.Models
///
/// 备用字段1
///
- [Column("ud1")]
- public string ud1 { get; set; }
+ [Column("ctu_execute")]
+ public string CTUExecute { get; set; }
///
/// 备用字段2
///
- [Column("ud2")]
- public string ud2 { get; set; }
+ [Column("is_empty")]
+ public string isEmpty { get; set; }
///
/// 备用字段3
///
[Column("ud3")]
public string ud3 { get; set; }
-
+ ///
+ /// 备用字段3
+ ///
+ [Column("ud1")]
+ public string ud1 { get; set; }
+ ///
+ /// 备用字段3
+ ///
+ [Column("ud2")]
+ public string ud2 { get; set; }
///
/// 备注
///
diff --git a/src/Khd.Core.Domain/Models/WmsRawOutstockDetail.cs b/src/Khd.Core.Domain/Models/WmsRawOutstockDetail.cs
index b02d248..f16030b 100644
--- a/src/Khd.Core.Domain/Models/WmsRawOutstockDetail.cs
+++ b/src/Khd.Core.Domain/Models/WmsRawOutstockDetail.cs
@@ -56,7 +56,7 @@ namespace Khd.Core.Domain.Models
/// 物料ID
///
[Column("material_id")]
- public long materialId { get; set; }
+ public long? materialId { get; set; }
///
/// 批次;扫描条码时,从打印条码记录表中获取
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index 760adc4..5c8d651 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -47,8 +47,6 @@ namespace Khd.Core.Wcs
WcsChuLiWanCheng = StaticPlcHelper.GetValue("2", "1");
//设置默认去向=>1为 Int16位
WcsMoRenQuXiang = StaticPlcHelper.GetValue("2", "1");
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
-
StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.basePlcs = dbContext.BasePlc.ToList();
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index 4e18058..3256aaf 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -70,8 +70,8 @@ namespace Khd.Core.Wcs.Wcs
var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
createRawInWareTaskThread.Start();
- var createProductTaskThread = new Thread(CreateProductTaskLogic);
- createProductTaskThread.Start();
+ var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
+ createFiveProductTaskThread.Start();
var createRawTaskThread = new Thread(CreateRawTaskLogic);
createRawTaskThread.Start();
@@ -129,7 +129,7 @@ namespace Khd.Core.Wcs.Wcs
WmsBaseLocation? wmsBaseLocation = null;
bill = bill.OrderBy(t => t.b.instockDate);
var fistbill = bill.FirstOrDefault();
- if(fistbill != null)
+ if (fistbill != null)
{
int? locRow = 0;
if (fistbill.a.locRow % 2 == 1)
@@ -148,10 +148,10 @@ namespace Khd.Core.Wcs.Wcs
.FirstOrDefault();
if (lastbill != null)
{
- if (lastbill.b.instockDate != null&&fistbill.b.instockDate != null)
+ if (lastbill.b.instockDate != null && fistbill.b.instockDate != null)
{
wmsBaseLocation = fistbill.a;
- if(lastbill.b.instockDate.Value.Date == fistbill.b.instockDate.Value.Date)
+ if (lastbill.b.instockDate.Value.Date == fistbill.b.instockDate.Value.Date)
{
wmsBaseLocation = lastbill.a;
}
@@ -162,11 +162,11 @@ namespace Khd.Core.Wcs.Wcs
List list = wmsRawStocks.Select(t => t.locationCode).ToList();
var deepLocation = wmsBaseLocations
.Where(t => t.locDeep == 1)
- .Where(t=>!list.Contains(t.locationCode))
+ .Where(t => !list.Contains(t.locationCode))
.ToList();
- if(deepLocation.Count > 0)
+ if (deepLocation.Count > 0)
{
- var toWmsBaseLocation= deepLocation.First();
+ var toWmsBaseLocation = deepLocation.First();
var EKWcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
@@ -230,7 +230,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
-
+
}
}
}
@@ -337,7 +337,7 @@ namespace Khd.Core.Wcs.Wcs
///
/// 成品出库
///
- private void CreateProductTaskLogic()
+ private void CreateFiveProductTaskLogic()
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
@@ -346,10 +346,14 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- var proStock = dbContext.WmsProductStock.Where(t => t.activeFlag == "0").ToList();
+ var proStock = dbContext.WmsProductStock
+ .Where(t => t.warehouseId == 531)
+ .Where(t => t.activeFlag == "0").ToList();
var proOutStock = dbContext.WmsProductOutstock
.Where(t => t.outstockQty < t.applyQty)
.Where(t => t.auditStatus == "1")
+ .Where(t => t.warehouseId == 531)
+ .Where(t => t.productType == "3")
.Where(t => t.executeStatus == "0" || t.executeStatus == "1").ToList();
//获取最早入库时间
foreach (var item in proOutStock)
@@ -444,15 +448,36 @@ namespace Khd.Core.Wcs.Wcs
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
- dbContext.Update(location);
- dbContext.Add(wcsTask);
- dbContext.Update(stock);
- dbContext.SaveChanges();
- if (qty >= needNumber)
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.productBatch).FirstOrDefault();
+ if(mesBaseBarcodeInfo != null)
{
- break;
- }
+ WmsProductOutstockDetail wmsProductOutstockDetail = new WmsProductOutstockDetail()
+ {
+ productOutstockDetailId = StaticData.SnowId.NextId(),
+ productOutstockId = item.productOutstockId,
+ productId = item.productId,
+ beginTime = DateTime.Now,
+ confirmAmount = 0,
+ executeStatus = "1",
+ locationCode = location.locationCode,
+ outstockAmount = qty,
+ planAmount = item.applyQty,
+ warehouseId = item.warehouseId,
+ productBatch = mesBaseBarcodeInfo.batchCode,
+ productBarcode=mesBaseBarcodeInfo.barcodeInfo
+ };
+ dbContext.Add(wmsProductOutstockDetail);
+ dbContext.Update(location);
+ dbContext.Add(wcsTask);
+ dbContext.Update(stock);
+ dbContext.SaveChanges();
+ if (qty >= needNumber)
+ {
+ break;
+ }
+ }
}
+
if (item.beginTime == null)
{
item.beginTime = DateTime.Now;
@@ -583,18 +608,39 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 1,
qty = outNumber
};
- location.outstockFlag = "1";
- location.locationStatus = "6";
- location.updateBy = "WCS";
- location.updateTime = DateTime.Now;
- wcsOutstockLock.boxStatus = 1;
- dbContext.Update(location);
- dbContext.Add(wcsTask);
- dbContext.Update(stock);
- dbContext.SaveChanges();
- if (qty >= needNumber)
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
+ if (mesBaseBarcodeInfo != null)
{
- break;
+ WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
+ {
+ rawOutstockDetailId = StaticData.SnowId.NextId(),
+ rawOutstockId = item.rawOutstockId,
+ materialId = item.materialId,
+ createDate = DateTime.Now,
+ createBy = "WCS",
+ taskCode = wcsTask.objid.ToString(),
+ executeStatus = "1",
+ locationCode = location.locationCode,
+ outstockAmount = qty,
+ planAmount = item.outstockAmount,
+ warehouseId = item.warehouseId,
+ materialBarcode= mesBaseBarcodeInfo.barcodeInfo,
+ instockBatch=mesBaseBarcodeInfo.batchCode
+ };
+ dbContext.Add(wmsProductOutstockDetail);
+ location.outstockFlag = "1";
+ location.locationStatus = "6";
+ location.updateBy = "WCS";
+ location.updateTime = DateTime.Now;
+ wcsOutstockLock.boxStatus = 1;
+ dbContext.Update(location);
+ dbContext.Add(wcsTask);
+ dbContext.Update(stock);
+ dbContext.SaveChanges();
+ if (qty >= needNumber)
+ {
+ break;
+ }
}
}
if (item.beginTime == null)
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index 2c11fdf..d70e896 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -571,6 +571,12 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 38)//出库
{
+ var wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == item.orderId);
+ if(wmsProductOutstockDetail != null)
+ {
+ wmsProductOutstockDetail.executeStatus = "2";
+ dbContext.Update(wmsProductOutstockDetail);
+ }
BaseEquip lineEquip = StaticData.BaseEquip.First(t=>t.objid==5);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.endPointId && t.warehouseFloor == 5);
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index a2b1ce5..2743182 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -133,7 +133,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
- catch(Exception ex)
+ catch (Exception ex)
{
if (ex is PlcException)
{
@@ -208,16 +208,16 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- var taskList = dbContext.WcsTask.Where(t => t.nextPointId == CTUID).OrderBy(t=>t.createTime).ToList();
+ var taskList = dbContext.WcsTask.Where(t => t.nextPointId == CTUID).OrderBy(t => t.createTime).ToList();
if (taskList.Count == 0)
{
LogManager.Info(FloorNo + "楼CTU无任务");
}
foreach (var item in taskList)
{
- if (!taskList.Where(t => t.taskType == 29 && t.ud1 == "2").Any())
+ if (!taskList.Where(t => t.taskType == 29 && t.CTUExecute == "2").Any())
{
- if (item.ud1 == "1")
+ if (item.CTUExecute == "1")
{
ExecuteInTask(baseEquip);
WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
@@ -225,7 +225,7 @@ namespace Khd.Core.Wcs.Wcs
wcsOutstockLock.boxStatus = 0;
dbContext.Update(wcsOutstockLock);
isWait = false;
- item.ud1 = "2";
+ item.CTUExecute = "2";
dbContext.Update(item);
}
}
@@ -373,7 +373,6 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsCmd.cmdStatus == 3)
{
-
if (item.taskType == 30)
{
var canOut = this._plc.Read(isput.plcpointAddress);
@@ -429,23 +428,21 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsCmd.cmdStatus == 5)
{
- //任务完成
- //如果是出库任务,更新库存信息,并删除任务
- if (item.taskType == 30)
+ if (item.taskType == 30)//出库任务
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.startPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
dbContext.Update(wmsBaseLocation);
-
+ dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.SaveChanges();
}
- else//如果是入库任务,更新库存信息,下一个任务为提升机
+ else if (item.taskType == 29)//入库任务
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.endPointId && t.warehouseFloor == 5);
@@ -499,48 +496,12 @@ namespace Khd.Core.Wcs.Wcs
else
{
LogManager.Info("下发CTU执行入库任务失败");
+ Console.WriteLine($"{DateTime.Now}:下发CTU执行入库任务失败" + executeReponse?.message);
+ ExecuteInTask(baseEquip);
+ Thread.Sleep(1000);
}
}
}
- ///
- /// 下发任务
- ///
- ///
- public void SendTask(long? orderId)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- var taskList = dbContext.WcsTask.Where(t => t.orderId == orderId).ToList();
- //获取
- if (taskList.Count == 0)
- return;
- //首先判断是否已下发指令
- var cmd = dbContext.WcsCmd.Where(t => taskList.Select(t => t.objid).ToList().Contains(t.taskId.GetValueOrDefault())).FirstOrDefault();
- //指令表存在说明已下发
- if (cmd != null) return;
- //获取下发agv指令
- string ip = ""; int port = 0; string url = "";
- RequestAGVTaskDto agvtask = new RequestAGVTaskDto();
- agvtask.reqCode = orderId.ToString();
- var json = JsonConvert.SerializeObject(agvtask);
- HttpHelper.SendPostMessage(ip, port, url, json);
- foreach (var item in taskList)
- {
- //未下发给agv下发指令
- WcsCmd taskCmd = new WcsCmd()
- {
- taskId = item.objid,
- cmdType = item.taskType,
- serialNo = item.serialNo,
- equipmentNo = item.equipmentNo,
- cmdStatus = 1,
- createBy = FloorNo + "楼CTU",
- createTime = DateTime.Now,
- };
- dbContext.Add(taskCmd);
- dbContext.SaveChanges();
- }
- }
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index e939791..129ef39 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -192,7 +192,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId);
if (wmsRawOutstock != null)
{
- BaseEquip endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode);
+ var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode);
if (endEquip != null)
{
floor = endEquip.floorNo;
@@ -245,119 +245,5 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
-
- public WcsTask? GetTask(string containerNo, int floorNo, string equipNo)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- var wcsTask = new WcsTask();
- var wareHouseList = StaticData.WmsBaseWarehouse.ToList();
- try
- {
- //获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
- var task = StaticData.WcsTask.Where(t => t.containerNo == containerNo).FirstOrDefault();
- if (task == null)
- {
- var palletInfo = StaticData.MesBasePalletInfo.Where(t => t.palletInfoCode == containerNo).FirstOrDefault();
- //查询该条码绑定的物料信息
- var material = StaticData.WmsWarehouseMaterial.Where(t => t.storageId == palletInfo.materialId).FirstOrDefault();
- var wareHouse = wareHouseList.Where(t => t.warehouseId == material.warehouseId).FirstOrDefault();
- var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == wareHouse.warehouseInstockType).FirstOrDefault();
- var equip = StaticData.BaseEquip.ToList();
- var startEquip = equip.Where(t => t.equipNo == equipNo).FirstOrDefault();
- var endPoint = wareHouseList.Where(t => t.warehouseFloor == floorNo).FirstOrDefault();
- if (palletInfo != null && startEquip != null && material != null && dic != null && endPoint != null)
- {
- //自动获取id
- var objid = StaticData.SnowId.NextId();
- WcsTask newTask = new()
- {
- objid = objid,
- taskType = Convert.ToInt32(dic.dicValue),
- containerNo = containerNo,
- taskStatus = 0,
- materialId = material.storageId,
- qty = Convert.ToInt32(palletInfo.bindAmount),
- startPointId = startEquip.objid,
- startPointNo = equipNo,
- currPointId = startEquip.objid,
- currPointNo = equipNo,
- endPointId = endPoint.warehouseId,
- endPointNo = endPoint.warehouseCode,
- };
- dbContext.Add(newTask);
- dbContext.SaveChanges();
- wcsTask = newTask;
- }
- else
- {
- LogManager.Info(floorNo + "楼接驳位,托盘" + containerNo + "未绑定!");
- }
- }
- else
- {
- wcsTask = StaticData.WcsTask.Where(t => t.currPointNo == equipNo).FirstOrDefault();
- }
- }
- catch (Exception ex)
- {
- LogManager.Info(floorNo + "楼接驳位异常" + ex.Message);
- throw;
- }
- return wcsTask;
- }
- ///
- /// 下发任务
- ///
- ///
- public void SendTask(WcsTask task)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- //入库类型
- List taskInType = new List { 1, 3, 5, 7 };
- List taskOutType = new List { 2, 4, 6, 8 };
- try
- {
- //获取
- if (task == null) return;
- if (taskInType.Contains(task.taskType.GetValueOrDefault()))
- {
- //首先判断是否已下发指令
- var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault();
- //指令表存在说明已下发
- if (cmd != null) return;
- //获取下发agv指令
- string ip = ""; int port = 0; string url = "";
- RequestAGVTaskDto agvtask = new RequestAGVTaskDto();
- agvtask.reqCode = task.serialNo.ToString();
- var json = JsonConvert.SerializeObject(agvtask);
- HttpHelper.SendPostMessage(ip, port, url, json);
- //未下发给agv下发指令
- WcsCmd taskCmd = new WcsCmd()
- {
- taskId = task.objid,
- cmdType = task.taskType,
- serialNo = task.serialNo,
- equipmentNo = task.equipmentNo,
- cmdStatus = 1,
- createBy = "",
- createTime = DateTime.Now,
- };
- dbContext.Add(taskCmd);
- dbContext.SaveChanges();
- }
- else
- {
-
- }
-
- }
- catch (Exception)
- {
-
- throw;
- }
- }
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index ae36c90..127f50d 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -75,6 +75,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
var taskList = dbContext.WcsTask.Where(t => t.nextPointId == EquipID).ToList();
+
}
catch (Exception ex)
{
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
index 39db367..eef3a92 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
@@ -85,78 +85,102 @@ namespace Khd.Core.Wcs.Wcs
{
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 1);
var wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid && t.nextPointId == baseEquip.objid);
+ var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 4);//背负Agv
if (wcsTask != null)//如果不是null
{
if (wcsTask.taskStatus == 5)//提升机任务是完成状态
{
- var wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseFloor == FloorNo)
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .ToList();
-
- List containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘
- List mesBasePalletInfos = dbContext.MesBasePalletInfo
- .Where(t => t.materialId == wcsTask.materialId)
- .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
-
- var bill = from a in mesBasePalletInfos
- join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode
- select new { b };//等于当前任务的物料的托盘的库位信息
-
- var outBill = from a in bill
- from b in wmsBaseLocations
- where a.b.layerNum == b.layerNum
- && b.locDeep == 2
- && a.b.locRow == b.locRow
- && a.b.locColumn == b.locColumn
- && b.locationStatus == "1"
- && b.outstockFlag == "0"
- && b.instockFlag == "0"
- && string.IsNullOrEmpty(b.containerCode)
- select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
- WmsBaseLocation? wmsBaseLocation = null;
- wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位
- wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位
- wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
- //深浅库位问题?库位入库优先级等
-
- var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 4);//背负Agv
- if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
+ if (wcsTask.isEmpty == "1")
{
- wcsTask.taskStatus = 0;//创建状态
- wcsTask.updateTime = DateTime.Now;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.nextPointId = AgvEquip.objid;
- wcsTask.nextPointNo = AgvEquip.equipNo;
- wcsTask.endPointId = wmsBaseLocation.locationId;
- wcsTask.endPointNo = wmsBaseLocation.locationCode;
- if (wmsBaseLocation.warehouseId == 311)
+ var emptyEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == 0);
+ if(emptyEquip != null)
{
- wcsTask.taskType = 39;
+ wcsTask.taskStatus = 0;//创建状态
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.currPointId = baseEquip.objid;
+ wcsTask.currPointNo = baseEquip.equipNo;
+ wcsTask.nextPointId = AgvEquip.objid;
+ wcsTask.nextPointNo = AgvEquip.equipNo;
+ wcsTask.endPointId = emptyEquip.objid;
+ wcsTask.endPointNo = emptyEquip.equipNo;
+ wcsTask.useFlag = 1;
+ dbContext.Update(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
}
- else
- {
- Console.WriteLine("查找入库库位失败");
- Thread.Sleep(1000);
- continue;
- }
- wcsTask.useFlag = 1;
- wmsBaseLocation.instockFlag = "1";
- wmsBaseLocation.locationStatus = "2";
- dbContext.Update(wmsBaseLocation);
- dbContext.Update(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
}
else
{
- Console.WriteLine(DateTime.Now + ":三楼楼接驳位调度入库任务,未找到库位");
- LogManager.Info("三楼接驳位调度入库任务,未找到库位");
+ var wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseFloor == FloorNo)
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .ToList();
+
+ List containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘
+ List mesBasePalletInfos = dbContext.MesBasePalletInfo
+ .Where(t => t.materialId == wcsTask.materialId)
+ .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
+
+ var bill = from a in mesBasePalletInfos
+ join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode
+ select new { b };//等于当前任务的物料的托盘的库位信息
+
+ var outBill = from a in bill
+ from b in wmsBaseLocations
+ where a.b.layerNum == b.layerNum
+ && b.locDeep == 2
+ && a.b.locRow == b.locRow
+ && a.b.locColumn == b.locColumn
+ && b.locationStatus == "1"
+ && b.outstockFlag == "0"
+ && b.instockFlag == "0"
+ && string.IsNullOrEmpty(b.containerCode)
+ select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
+ WmsBaseLocation? wmsBaseLocation = null;
+ wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位
+ wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位
+ wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
+ //深浅库位问题?库位入库优先级等
+
+
+ if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
+ {
+ wcsTask.taskStatus = 0;//创建状态
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.currPointId = baseEquip.objid;
+ wcsTask.currPointNo = baseEquip.equipNo;
+ wcsTask.nextPointId = AgvEquip.objid;
+ wcsTask.nextPointNo = AgvEquip.equipNo;
+ wcsTask.endPointId = wmsBaseLocation.locationId;
+ wcsTask.endPointNo = wmsBaseLocation.locationCode;
+ if (wmsBaseLocation.warehouseId == 311)
+ {
+ wcsTask.taskType = 39;
+ }
+ else
+ {
+ Console.WriteLine("查找入库库位失败");
+ Thread.Sleep(1000);
+ continue;
+ }
+ wcsTask.useFlag = 1;
+ wmsBaseLocation.instockFlag = "1";
+ wmsBaseLocation.locationStatus = "2";
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Update(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ Console.WriteLine(DateTime.Now + ":三楼楼接驳位调度入库任务,未找到库位");
+ LogManager.Info("三楼接驳位调度入库任务,未找到库位");
+ }
}
}
else if (wcsTask.taskStatus == 6)//小车任务是完成状态,说明是出库
diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json
index c5106ba..1b7381e 100644
--- a/src/Khd.Core.Wcs/appsettings.json
+++ b/src/Khd.Core.Wcs/appsettings.json
@@ -1,6 +1,7 @@
{
"ConnectionStrings": {
//"DefaultConnection": "server=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True",
+ //"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;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"
},
@@ -13,22 +14,22 @@
"Slot": 1,
"Code": 0
},
- //{
- // "IP": "192.168.2.31",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 1
- //},
- //{
- // "IP": "192.168.2.220",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 2
- //}
+ {
+ "IP": "192.168.2.31",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 1
+ },
+ {
+ "IP": "192.168.2.220",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 2
+ }
],
"PLCSetting": {
"Mode": "0",
diff --git a/src/Khd.Core.Wpf/App.xaml b/src/Khd.Core.Wpf/App.xaml
index c6b4434..9611e71 100644
--- a/src/Khd.Core.Wpf/App.xaml
+++ b/src/Khd.Core.Wpf/App.xaml
@@ -4,6 +4,11 @@
xmlns:local="clr-namespace:Khd.Core.Wpf"
StartupUri="LoginPage.xaml">
-
+
+
+
+
+
+
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index f0d0073..0da15dc 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -4,14 +4,15 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Khd.Core.Wpf.myConverter"
- mc:Ignorable="d" WindowStyle="None"
+ mc:Ignorable="d"
+ WindowStyle="None"
WindowStartupLocation="CenterOwner"
+ xmlns:hc="https://handyorg.github.io/handycontrol"
WindowState="Maximized"
Title="FormBoardT"
Loaded="FormBoard_Loaded"
Width="1920"
Height="1080"
-
>
@@ -97,7 +98,7 @@
-