master
LAPTOP-NLSJV9RB\91647 2 years ago
parent 5b4f023066
commit b19350ce1a

@ -90,37 +90,32 @@ namespace Khd.Core.Wcs.Wcs
if (item.taskType == 5 || item.taskType == 11)//入库
{
var loc = dbContext.WmsBaseLocation.Where(t => t.activeFlag == "1").ToList();
//2楼成品
if (item.taskType == 5 || item.taskType == 11)//成品入库||成品移库
var stock = dbContext.WmsProductStock.Where(t => t.activeFlag == "1").ToList();
//获取有物料的库位
var locStock = from l in loc
join s in stock on l.locationCode equals s.locationCode
select new
{
LocId = l.locationId,
locCode = l.locationCode,
LocDeep = l.locDeep,
productBatch = s.productBatch
};
//获取空库位
var nullLocList = loc.Where(r => !locStock.Select(t => t.locCode).Contains(r.locationCode) && r.warehouseId == 1).ToList();
var location = nullLocList.OrderBy(t => t.locColumn).FirstOrDefault();
if (location == null) return;
item.currPointId = 8;
item.currPointNo = "AGV01";
item.nextPointId = location.locationId;
item.nextPointNo = location.locationCode;
//锁定库位
dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation()
{
var stock = dbContext.WmsProductStock.Where(t => t.activeFlag == "1").ToList();
//获取有物料的库位
var locStock = from l in loc
join s in stock on l.locationCode equals s.locationCode
select new
{
LocId = l.locationId,
locCode = l.locationCode,
LocDeep = l.locDeep,
productBatch = s.productBatch
};
//获取空库位
var nullLocList = loc.Where(r => !locStock.Select(t => t.locCode).Contains(r.locationCode) && r.warehouseId == 1).ToList();
var location = nullLocList.OrderBy(t => t.locColumn).FirstOrDefault();
if (location == null) return;
item.currPointId = 8;
item.currPointNo = "AGV01";
item.nextPointId = location.locationId;
item.nextPointNo = location.locationCode;
//锁定库位
dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation()
{
locationStatus = "6",
updateTime = DateTime.Now,
updateBy = "agv出库",
});
}
locationStatus = "6",
updateTime = DateTime.Now,
updateBy = "agv出库",
});
//下发agv出库指令
SendAndUpdateTask(item);
}

@ -75,8 +75,6 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
List<int> taskInType = new List<int> { 1, 3, 5, 7 };
List<int> taskOutType = new List<int> { 2, 4, 6, 8 };
while (true)
{
try
@ -89,7 +87,7 @@ namespace Khd.Core.Wcs.Wcs
}
foreach (var item in taskList)
{
if (item.taskType == 1)//入
if (item.taskType == 1|| item.taskType == 9)//入库||移
{
var loc = dbContext.WmsBaseLocation.Where(t => t.activeFlag == "1").ToList();
@ -113,6 +111,13 @@ namespace Khd.Core.Wcs.Wcs
item.nextPointId = location.locationId;
item.nextPointNo = location.locationCode;
dbContext.Update(item);
//锁定库位
dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation()
{
locationStatus = "6",
updateTime = DateTime.Now,
updateBy = "agv出库",
});
//下发agv出库指令
SendAndUpdateTask(item);
}
@ -328,86 +333,86 @@ namespace Khd.Core.Wcs.Wcs
// }
// return wcsTask;
//}
public void SendTask(WcsTask task)
{
//获取
if (task == null) return;
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
WcsToWms wcsToWms = new WcsToWms();
//首先判断是否已下发指令
var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault();
//指令表存在说明已下发
if (cmd == null)
{ //获取下发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);
wcsToWms.genAgvSchedulingTask(agvtask);
//未下发给agv下发指令
WcsCmd taskCmd = new WcsCmd()
{
taskId = task.objid,
cmdType = task.taskType,
serialNo = task.serialNo,
equipmentNo = task.equipmentNo,
cmdStatus = 1,
createBy = FloorNo + "楼AGV",
createTime = DateTime.Now,
};
dbContext.Add(taskCmd);
dbContext.SaveChanges();
}
else
{
//获取接驳位是否有托盘
var IsPallet = this._plc.Read(this.LineIsPallet.plcpointAddress);
if (cmd.sendFlag == 0)
{
if (taskInType.Contains(task.taskType.GetValueOrDefault()))//入库
{
//入库时有托盘继续任务
if (Convert.ToInt32(IsPallet) == 1)
{
//public void SendTask(WcsTask task)
//{
// //获取
// if (task == null) return;
// using var scope = _host.Services.CreateScope();
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
// WcsToWms wcsToWms = new WcsToWms();
// //首先判断是否已下发指令
// var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault();
// //指令表存在说明已下发
// if (cmd == null)
// { //获取下发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);
// wcsToWms.genAgvSchedulingTask(agvtask);
// //未下发给agv下发指令
// WcsCmd taskCmd = new WcsCmd()
// {
// taskId = task.objid,
// cmdType = task.taskType,
// serialNo = task.serialNo,
// equipmentNo = task.equipmentNo,
// cmdStatus = 1,
// createBy = FloorNo + "楼AGV",
// createTime = DateTime.Now,
// };
// dbContext.Add(taskCmd);
// dbContext.SaveChanges();
// }
// else
// {
// //获取接驳位是否有托盘
// var IsPallet = this._plc.Read(this.LineIsPallet.plcpointAddress);
// if (cmd.sendFlag == 0)
// {
// if (taskInType.Contains(task.taskType.GetValueOrDefault()))//入库
// {
// //入库时有托盘继续任务
// if (Convert.ToInt32(IsPallet) == 1)
// {
continueTaskDto continueTask = new continueTaskDto();
continueTask.taskCode = task.objid.ToString();
wcsToWms.continueTask(continueTask);
//未下发给agv下发指令
WcsCmd taskCmd = new WcsCmd()
{
taskId = task.objid,
sendFlag = 1,
createBy = FloorNo + "楼AGV",
createTime = DateTime.Now,
};
dbContext.Update(taskCmd);
dbContext.SaveChanges();
}
}
else
{
//出库时没有托盘继续任务
if (Convert.ToInt32(IsPallet) == 0)
{
continueTaskDto continueTask = new continueTaskDto();
continueTask.taskCode = task.objid.ToString();
// continueTaskDto continueTask = new continueTaskDto();
// continueTask.taskCode = task.objid.ToString();
// wcsToWms.continueTask(continueTask);
// //未下发给agv下发指令
// WcsCmd taskCmd = new WcsCmd()
// {
// taskId = task.objid,
// sendFlag = 1,
// createBy = FloorNo + "楼AGV",
// createTime = DateTime.Now,
// };
// dbContext.Update(taskCmd);
// dbContext.SaveChanges();
// }
// }
// else
// {
// //出库时没有托盘继续任务
// if (Convert.ToInt32(IsPallet) == 0)
// {
// continueTaskDto continueTask = new continueTaskDto();
// continueTask.taskCode = task.objid.ToString();
wcsToWms.continueTask(continueTask);
//更新任务
dbContext.WcsCmd.Where(t => t.taskId == task.objid).Update(t => new WcsCmd()
{
sendFlag = 1,
updateTime = DateTime.Now,
updateBy = "agv出库",
});
}
}
}
}
}
// wcsToWms.continueTask(continueTask);
// //更新任务
// dbContext.WcsCmd.Where(t => t.taskId == task.objid).Update(t => new WcsCmd()
// {
// sendFlag = 1,
// updateTime = DateTime.Now,
// updateBy = "agv出库",
// });
// }
// }
// }
// }
//}
}
}

Loading…
Cancel
Save