|
@@ -72,67 +72,74 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
{
|
|
|
ApplyEmptySpoolResponse agvFill = new ApplyEmptySpoolResponse();
|
|
|
|
|
|
- if (!World.IsStart)
|
|
|
+ try
|
|
|
{
|
|
|
- agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
- agvFill.ResMsg = "WCS初始化中";
|
|
|
- return agvFill;
|
|
|
- }
|
|
|
- var obj = World.GetSystemInstance<GetDeviceSystem>().Invoke("输送机") as List<Station>;
|
|
|
-
|
|
|
- // 检测三个站台是否有货
|
|
|
- obj = obj.Where(v => v.Entity.Code is "1012" or "1014" or "1016").Where(v => v.Data3.Status.HasFlag(StatusEunm.PH_Status)).ToList();
|
|
|
- if (!obj.Any())
|
|
|
- {
|
|
|
- agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
- agvFill.ResMsg = "无空轮";
|
|
|
- return agvFill;
|
|
|
- }
|
|
|
- SqlSugarHelper.Do(db =>
|
|
|
- {
|
|
|
- var res = WmsApi.GetTunnelEmptyConCount();
|
|
|
-
|
|
|
- var agvStations = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(2))
|
|
|
- .Where(v => v.Status < AGVTaskStatus.Complete3 && v.TaskType == AGVTaskType.CallForMaterial).Select(v => v.Station).ToList();
|
|
|
- obj = obj.Where(v => !agvStations.Contains(v.Entity.Code)).ToList();
|
|
|
- if (!obj.Any())
|
|
|
+ if (!World.IsStart)
|
|
|
{
|
|
|
agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
- agvFill.ResMsg = "无可用取货站点";
|
|
|
- return;
|
|
|
+ agvFill.ResMsg = "WCS初始化中";
|
|
|
+ return agvFill;
|
|
|
}
|
|
|
+ var obj = World.GetSystemInstance<GetDeviceSystem>().Invoke("输送机") as List<Station>;
|
|
|
|
|
|
- foreach (var item in res.ResDataList)
|
|
|
+ // 检测三个站台是否有货
|
|
|
+ obj = obj.Where(v => v.Entity.Code is "1012" or "1014" or "1016").Where(v => v.Data3.Status.HasFlag(StatusEunm.PH_Status)).ToList();
|
|
|
+ if (!obj.Any())
|
|
|
{
|
|
|
- var station = Device.All.Where(v => v.Code == "TY" + item.Tunnel.ToString())
|
|
|
- .Select(v => v.Targets).SelectMany(v => v)
|
|
|
- .Where(v => v.HasProtocol(typeof(IStation520)))
|
|
|
- .Where(v => v.Code is "1012" or "1014" or "1016")
|
|
|
- .FirstOrDefault();
|
|
|
- item.Tunnel = station.ToInt();
|
|
|
+ agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
+ agvFill.ResMsg = "无空轮";
|
|
|
+ return agvFill;
|
|
|
}
|
|
|
- var stationNo = res.ResDataList.OrderBy(v => v.Count).Select(v => v.Tunnel.ToString()).ToList();
|
|
|
- agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.Sucess;
|
|
|
- var dev = obj.MinBy(v => stationNo.IndexOf(v.Entity.Code));
|
|
|
- agvFill.LocCode = dev.Entity.Code;
|
|
|
- agvFill.SpoolType = "4";
|
|
|
- agvFill.ResMsg = "";
|
|
|
- var id = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(1)).Max(v => v.ID);
|
|
|
- var agv = new WCS_AgvTaskInfo()
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
{
|
|
|
- ID = db.GetAGVTaskId(),
|
|
|
- TaskType = AGVTaskType.CallForMaterial,
|
|
|
- Status = AGVTaskStatus.NewBuild,
|
|
|
- Station = agvFill.LocCode,
|
|
|
- AddWho = "WCS"
|
|
|
- };
|
|
|
- //创建对应的AGV任务
|
|
|
- db.Default.Insertable(agv).SplitTable().ExecuteCommand();
|
|
|
- var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == dev.Data.TaskNumber);
|
|
|
- task.AgvTaskID=agv.ID;
|
|
|
- db.Default.Updateable(task).ExecuteCommand();
|
|
|
-
|
|
|
- });
|
|
|
+ var res = WmsApi.GetTunnelEmptyConCount();
|
|
|
+
|
|
|
+ var agvStations = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(2))
|
|
|
+ .Where(v => v.Status < AGVTaskStatus.Complete3 && v.TaskType == AGVTaskType.CallForMaterial).Select(v => v.Station).ToList();
|
|
|
+ obj = obj.Where(v => !agvStations.Contains(v.Entity.Code)).ToList();
|
|
|
+ if (!obj.Any())
|
|
|
+ {
|
|
|
+ agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
+ agvFill.ResMsg = "无可用取货站点";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var item in res.ResDataList)
|
|
|
+ {
|
|
|
+ var station = Device.All.Where(v => v.Code == "TY" + item.Tunnel.ToString())
|
|
|
+ .Select(v => v.Targets).SelectMany(v => v)
|
|
|
+ .Where(v => v.HasProtocol(typeof(IStation520)))
|
|
|
+ .Where(v => v.Code is "1012" or "1014" or "1016")
|
|
|
+ .FirstOrDefault();
|
|
|
+ item.Tunnel = station.ToInt();
|
|
|
+ }
|
|
|
+ var stationNo = res.ResDataList.OrderBy(v => v.Count).Select(v => v.Tunnel.ToString()).ToList();
|
|
|
+ agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.Sucess;
|
|
|
+ var dev = obj.MinBy(v => stationNo.IndexOf(v.Entity.Code));
|
|
|
+ agvFill.LocCode = dev.Entity.Code;
|
|
|
+ agvFill.SpoolType = "4";
|
|
|
+ agvFill.ResMsg = "";
|
|
|
+ var id = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(1)).Max(v => v.ID);
|
|
|
+ var agv = new WCS_AgvTaskInfo()
|
|
|
+ {
|
|
|
+ ID = db.GetAGVTaskId(),
|
|
|
+ TaskType = AGVTaskType.CallForMaterial,
|
|
|
+ Status = AGVTaskStatus.NewBuild,
|
|
|
+ Station = agvFill.LocCode,
|
|
|
+ AddWho = "WCS"
|
|
|
+ };
|
|
|
+ //创建对应的AGV任务
|
|
|
+ db.Default.Insertable(agv).SplitTable().ExecuteCommand();
|
|
|
+ var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == dev.Data.TaskNumber);
|
|
|
+ task.AgvTaskID = agv.ID;
|
|
|
+ db.Default.Updateable(task).ExecuteCommand();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ agvFill.ResCode = Models.WMS.Response.ResponseStatusCodeEnum.DataSaveErr;
|
|
|
+ agvFill.ResMsg = ex.Message;
|
|
|
+ }
|
|
|
|
|
|
return agvFill;
|
|
|
}
|
|
@@ -153,7 +160,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
SqlSugarHelper.Do(db =>
|
|
|
{
|
|
|
//跟据AGVid找到对应的AGV任务
|
|
|
- var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(2)).First(v => v.AgvID == reqDto.taskCode);
|
|
|
+ var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(2)).First(v => v.AgvID == reqDto.taskCode && v.Status < AGVTaskStatus.MissionCompleted);
|
|
|
if (agvTask == null && reqDto.method != "applySecurity")
|
|
|
{
|
|
|
res.code = AgvResponseCode.Fail;
|
|
@@ -162,16 +169,6 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
}
|
|
|
switch (reqDto.method)
|
|
|
{
|
|
|
- //case "start": //表示请求巷道
|
|
|
-
|
|
|
- // agvTask.Status = AGVTaskStatus.RequestOrPermission1;
|
|
|
- // break;
|
|
|
-
|
|
|
- //case "end": //表示请求巷道
|
|
|
-
|
|
|
- // agvTask.Status = AGVTaskStatus.RequestOrPermission1;
|
|
|
- // break;
|
|
|
-
|
|
|
case "applyContinue": //表示请求巷道
|
|
|
|
|
|
agvTask.Status = AGVTaskStatus.RequestOrPermission1;
|
|
@@ -187,9 +184,10 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
var obj = World.GetSystemInstance<GetDeviceSystem>().Invoke("输送机") as List<Station>;
|
|
|
var id = obj.FirstOrDefault(v => v.Entity.Code == agvTask.Station).Data.TaskNumber;
|
|
|
taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == id);
|
|
|
- taskInfo.AgvTaskID=agvTask.ID;
|
|
|
+ taskInfo.AgvTaskID = agvTask.ID;
|
|
|
taskInfo.Status = Entity.TaskStatus.AGVExecution;
|
|
|
taskInfo.AddWCS_TASK_DTL(db, agvTask.Station, "agv执行中");
|
|
|
+ db.Default.Updateable(taskInfo).ExecuteCommand();
|
|
|
}
|
|
|
if (agvTask == null)
|
|
|
{
|
|
@@ -203,12 +201,12 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
case "hjend_2": //补空任务完成
|
|
|
if (agvTask.TaskType == AGVTaskType.CallForMaterial)
|
|
|
{
|
|
|
-
|
|
|
taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.AgvTaskID == agvTask.ID);
|
|
|
taskInfo.Status = Entity.TaskStatus.Finish;
|
|
|
taskInfo.EedTime = DateTime.Now;
|
|
|
taskInfo.AddWCS_TASK_DTL(db, "agv缓存区", "任务完成");
|
|
|
taskInfo.CompleteOrCancelTasks(db);
|
|
|
+ db.Default.Updateable(taskInfo).ExecuteCommand();
|
|
|
}
|
|
|
agvTask.Status = AGVTaskStatus.MissionCompleted;
|
|
|
break;
|
|
@@ -239,16 +237,13 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
}
|
|
|
db.Default.Updateable(agvTask).SplitTable().ExecuteCommand();
|
|
|
});
|
|
|
- if (taskInfo != null&& taskInfo.Status== Entity.TaskStatus.Finish) WmsApi.CompleteTask(taskInfo.ID);
|
|
|
+ if (taskInfo != null && taskInfo.Status == Entity.TaskStatus.Finish) WmsApi.CompleteTask(taskInfo.ID);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
res.code = AgvResponseCode.Error;
|
|
|
res.message = ex.Message;
|
|
|
}
|
|
|
-
|
|
|
- if (taskInfo != null) WmsApi.CompleteTask(taskInfo.ID);
|
|
|
-
|
|
|
return res;
|
|
|
}
|
|
|
}
|