|
|
|
|
@ -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出库",
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|