Commit 07c67e06 张东亮

单独钢网入库运输

1 个父辈 3d426a33
......@@ -61,7 +61,7 @@ namespace DeviceLibrary.bean.job
runInfo = $"{JobParam.SrcNode.AliceName}门已开启,进电梯取料点";
ToPutShelfOn(agv, JobParam.SrcNode.Name);
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.电梯到达, out string msg);
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯到达, out string msg);
JobRunStep.Msg = runInfo;
}
}
......@@ -99,7 +99,7 @@ namespace DeviceLibrary.bean.job
bool rtn = lift.LiftContext.AGVLeave(JobParam.SrcNode.Name, agv, false);
runInfo = $"离开{JobParam.SrcNode.AliceName},关闭门:{rtn}";
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.离开电梯, out string msg);
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回离开电梯, out string msg);
JobRunStep.Msg = runInfo;
ClearLiftNodeOccupied(agv);
}
......@@ -116,7 +116,7 @@ namespace DeviceLibrary.bean.job
//else
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_07_ToLine);
runInfo = $"关闭{JobParam.SrcNode.AliceName}门完成,钢网出库,去{JobParam.CurTargetNode.AliceName}的放料点";
runInfo = $"关闭{JobParam.SrcNode.AliceName}门完成去{JobParam.CurTargetNode.AliceName}的放料点";
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.送料, out string msg);
AllocateTask(agv, $"{GetTargetName(JobParam.CurTargetNode)}_{SettingString.TakeShelfOff}");
......
......@@ -23,6 +23,7 @@ namespace DeviceLibrary.bean.job
lift.LiftStatus liftStatus;
public override Job Run(AgvInfo agv)
{
Job job = this;
agv.SetJobContext(new bean.agv.JobContext()
{
MissionId = JobParam.GetMissionInfo().missionId,
......@@ -231,8 +232,9 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_14_Dock);
runInfo = $"到达{JobParam.CurTargetNode.AliceName}的放料点,开始停靠";
AllocateTask(agv, $"{SettingString.Docking}");
runInfo = $"到达{JobParam.CurTargetNode.AliceName}的放料点";//,开始停靠
//AllocateTask(agv, $"{SettingString.Docking}");
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_14_Dock))
......@@ -240,6 +242,8 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_15_CheckState);
runInfo = "等待立库停靠完成信号";
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_15_CheckState))
......@@ -247,8 +251,9 @@ namespace DeviceLibrary.bean.job
if (manager.DataBufferManager.DockingOk)
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_16_TakeOff);
runInfo = $"在{JobParam.CurTargetNode.AliceName}停靠完成,卸下料架";
AllocateTask(agv, $"{SettingString.TakeShelfOff}");
runInfo = $"在{JobParam.CurTargetNode.AliceName}停靠完成";//,卸下料架
//AllocateTask(agv, $"{SettingString.TakeShelfOff}");
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_16_TakeOff))
......@@ -257,18 +262,20 @@ namespace DeviceLibrary.bean.job
{
manager.DataBufferManager.DetachShelf = true;
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave);
runInfo = $"在{JobParam.CurTargetNode.AliceName}卸下料架,等待立库发送离开信号";
runInfo = $"在{JobParam.CurTargetNode.AliceName}等待立库发送离开信号";//卸下料架,
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave))
{
if(DataBufferManager.LeaveLiku)
if (DataBufferManager.LeaveLiku)
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_18_PutOn);
runInfo = $"收到立库{JobParam.CurTargetNode.AliceName}发送的允许离开信号,拾取料架";
PutShelfOn(agv);
runInfo = $"收到立库{JobParam.CurTargetNode.AliceName}发送的允许离开信号";//,拾取料架
// PutShelfOn(agv);
JobRunStep.Msg = runInfo;
}
else if(JobRunStep.IsTimeOut(60))
else if (JobRunStep.IsTimeOut(60))
{
//上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
......@@ -281,39 +288,51 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_BackToLift);
if(!string.IsNullOrEmpty(DataBufferManager.SteelTarget))
MissionManager.ChangeSteelSrcNodes(JobParam.GetMissionInfo().missionId, "storage");
if (!string.IsNullOrEmpty(DataBufferManager.SteelTarget))
{
runInfo = $"收到钢网出库点:{DataBufferManager.SteelTarget}";
JobRunStep.Msg = runInfo;
MissionManager.AddSteelTarNodes(JobParam.GetMissionInfo().missionId,DataBufferManager.SteelTarget);
MissionManager.ChangeSteelTarNodes(JobParam.GetMissionInfo().missionId, DataBufferManager.SteelTarget);
}
else
{
runInfo = $"未收到钢网出库点";
MissionManager.ChangeSteelTarNodes(JobParam.GetMissionInfo().missionId, JobParam.GetMissionInfo().sourcePoint);
}
DataBufferManager.ResetSteelInfo();
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_19_BackToLift))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
if (TargetIsOccupied(agv, JobParam.SrcNode.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_ToStandby);
runInfo = $"{JobParam.SrcNode.AliceName}有车,去停留点";
JobRunStep.Msg = runInfo;
runInfo += $",{JobParam.SrcNode.AliceName}有车,去停留点";
AllocateTask(agv, $"{SettingString.Standby}");
}
else
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_20_Request);
runInfo = $"到达{JobParam.SrcNode.AliceName},请求使用电梯并等待电梯门开";
JobRunStep.Msg = runInfo;
//上报位置
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.SrcNode.Name}"));
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
System.Threading.Thread.Sleep(1000);
runInfo += $",返回{JobParam.SrcNode.AliceName}";
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯, out string msg);
JobParam.SetMissionInfo(MissionManager.GetMission(JobParam.GetMissionInfo().missionId));
AllocateTask(agv, JobParam.SrcNode.Name);
}
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_19_BackToLift))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_20_Request);
runInfo = $"到达{JobParam.SrcNode.AliceName},请求使用电梯并等待电梯门开";
JobRunStep.Msg = runInfo;
//上报位置
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.SrcNode.Name}"));
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
System.Threading.Thread.Sleep(1000);
}
}
......@@ -328,18 +347,17 @@ namespace DeviceLibrary.bean.job
runInfo = $"料车需返回,电梯口无料车,去电梯口";
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯, out string msg);
AllocateTask(agv, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_20_Request))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen);
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen))
{
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor))
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
......@@ -351,7 +369,7 @@ namespace DeviceLibrary.bean.job
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
......@@ -360,14 +378,16 @@ namespace DeviceLibrary.bean.job
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus))
{
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor))
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor))
{
if (lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_01_ToTemp1);
runInfo = $"{JobParam.SrcNode.AliceName}内有料车,去临时点1放料点";
AllocateTask(agv, $"{JobParam.SrcNode.Name}_{SettingString.Temp1}_{SettingString.TakeShelfOff}");
JobRunStep.Msg = runInfo;
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
if (missionInfo != null)
{
MissionManager.SetMissionOccupied(missionInfo, agv);
job = new SwitchShelfJob(JobParam);
}
}
else
{
......@@ -382,7 +402,7 @@ namespace DeviceLibrary.bean.job
{
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
}
}
#region 电梯内无料车
......@@ -442,51 +462,13 @@ namespace DeviceLibrary.bean.job
}
#endregion
#region 电梯内有料车
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_01_ToTemp1))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_02_WaitLiftIdle);
runInfo = $"到达{JobParam.SrcNode.AliceName}的临时点1的放料点,等待电梯空闲";
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_02_WaitLiftIdle))
{
if (!lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_03_RequestLift);
runInfo = $"请求使用{JobParam.SrcNode.AliceName}";
JobRunStep.Msg = runInfo;
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_03_RequestLift))
{
if (!lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo()))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_BackToLift);
runInfo = $"请求使用{JobParam.SrcNode.AliceName}成功,去电梯口";
JobRunStep.Msg = runInfo;
AllocateTask(agv, JobParam.SrcNode.Name);
}
else if (JobRunStep.IsTimeOut(20))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_03_RequestLift);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
}
}
#endregion
#endregion
else if (JobRunStep.IsStep(RunStep.END))
{
JobRunStep.EndJob();
return null;
}
return this;
return job;
}
}
}
......@@ -63,18 +63,18 @@ namespace DeviceLibrary
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库))
{
JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc);
//上报状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"取车"));
runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点";
ToTakeShelfOff(agv, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo;
}
else
//if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库))
//{
// JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc);
// //上报状态
// manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
// service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
// $"取车"));
// runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点";
// ToTakeShelfOff(agv, JobParam.SrcNode.Name);
// JobRunStep.Msg = runInfo;
//}
//else
{
JobRunStep.ToNextStep(RunStep.LineToLift_WaitConfirm);
runInfo = $"钢网领用任务,直接去电梯口";
......@@ -160,8 +160,6 @@ namespace DeviceLibrary
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.CurTargetNode.Name}"));
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.到达电梯, out string msg);
runInfo = $"到达{JobParam.CurTargetNode.AliceName},请求电梯并等待开门";
JobRunStep.Msg = runInfo;
//开始请求电梯
......
......@@ -348,42 +348,87 @@ namespace DeviceLibrary
}
else
{
if (missionInfo.projectType.Equals(ProjectType.钢网入库) || missionInfo.projectType.Equals(ProjectType.钢网领用))
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
Node dest = manager.NodeManager.GetNode(missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
job = new SteelLiftToStorageJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_06_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
else
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
string[] destTmp = missionInfo.destinationPoint.Split(',');
string[] dests = destTmp.Distinct().ToArray();
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
if (dests.Length > 1)
{
for (int i = 1; i < dests.Length; i++)
{
Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
if (node != null)
jobParam.TargetNodes.Add(node);
else
{
LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}");
job = null;
}
}
}
job = new LiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.SD_LiftToLine_06_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
}
}
else if (JobRunStep.IsStep(RunStep.Switch_19_ReturnShelf))
{
JobRunStep.ToNextStep(RunStep.END);
MissionInfo missionInfo = MissionManager.GetMission(liftMission.missionId);
if (missionInfo.projectType.Equals(ProjectType.钢网入库) || missionInfo.projectType.Equals(ProjectType.钢网领用))
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
string[] destTmp = missionInfo.destinationPoint.Split(',');
string[] dests = destTmp.Distinct().ToArray();
string[] dests = missionInfo.destinationPoint.Split(',');
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1)
{
for (int i = 1; i < dests.Length; i++)
{
Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
if (node != null)
jobParam.TargetNodes.Add(node);
else
{
LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}");
job = null;
Node tmp = jobParam.TargetNodes.Find(s => s.Name.Equals(node.Name));
if (tmp == null)
{
jobParam.TargetNodes.Add(node);
}
}
}
}
job = new LiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.SD_LiftToLine_06_CloseLiftDoor);
MissionManager.SetMissionOccupied(missionInfo, agv);
job = new SteelLiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_05_LeaveLift);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
}
else if (JobRunStep.IsStep(RunStep.Switch_19_ReturnShelf))
{
JobRunStep.ToNextStep(RunStep.END);
MissionInfo missionInfo = MissionManager.GetMission(liftMission.missionId);
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
MissionManager.SetMissionOccupied(missionInfo, agv);
job = new ShelfBackLiftToStoreJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.ShelfBack_LiftToStore_05_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
else
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
MissionManager.SetMissionOccupied(missionInfo, agv);
job = new ShelfBackLiftToStoreJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.ShelfBack_LiftToStore_05_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
}
else if (JobRunStep.IsStep(RunStep.END))
{
......
......@@ -22,7 +22,7 @@ namespace DeviceLibrary.bean.jobType
{
Node src = manager.NodeManager.GetNode(liftname, NodeType.Lift);
string[] dests = missionInfo.destinationPoint.Split(',');
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : lift.sourcePoint, NodeType.Node);
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : lift.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1)
......
......@@ -221,7 +221,7 @@ namespace DeviceLibrary.manager
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) &&
s.state.Equals(MissionState.创建) && s.projectType.Equals(ProjectType.钢网入库) &&
s.state.Equals(MissionState.创建) && (s.projectType.Equals(ProjectType.钢网入库) || s.projectType.Equals(ProjectType.钢网领用)) &&
agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
if (missionInfo != null && AgvCanGetMission(missionInfo))
{
......@@ -319,7 +319,10 @@ namespace DeviceLibrary.manager
&& w.state != MissionState.取消 && w.state != MissionState.完成);
missionInfo = missions.Find(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.到达电梯 && s.state <= MissionState.电梯到达)
&& agv.Scope.Tasks.Contains(s.projectType.ToString()) && !s.projectType.Equals(ProjectType.移远成品入库));
&& agv.Scope.Tasks.Contains(s.projectType.ToString())
&& !s.projectType.Equals(ProjectType.移远成品入库)
&& !s.projectType.Equals(ProjectType.钢网入库)
&& !s.projectType.Equals(ProjectType.钢网领用));
if (missionInfo != null && AgvCanGetMission(missionInfo))
{
return missionInfo;
......@@ -395,7 +398,7 @@ namespace DeviceLibrary.manager
{
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) &&
missionInfo = missions.Where(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.返回到达电梯内 && s.state <= MissionState.返回电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
......@@ -417,7 +420,7 @@ namespace DeviceLibrary.manager
{
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) &&
missionInfo = missions.Where(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.电梯运行 && s.state <= MissionState.电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
......@@ -651,7 +654,7 @@ namespace DeviceLibrary.manager
Log.Info($"设置任务[{missionInfo.missionId}] 状态为[{missionState}]成功");
//
}
public static void AddSteelTarNodes(string missionId, string nodes)
public static void ChangeSteelTarNodes(string missionId, string nodes)
{
MissionInfo missionInfo = GetMission(missionId);
if (missionInfo != null)
......@@ -669,6 +672,7 @@ namespace DeviceLibrary.manager
mission.liftName = item.liftName;
mission.occupiedAgv = item.occupiedAgv;
mission.destinationPoint = item.destinationPoint;
mission.sourcePoint= item.sourcePoint;
}
}
ctx.SaveChanges();
......@@ -680,6 +684,37 @@ namespace DeviceLibrary.manager
}
}
public static void ChangeSteelSrcNodes(string missionId, string nodes)
{
MissionInfo missionInfo = GetMission(missionId);
if (missionInfo != null)
{
missionInfo.sourcePoint = nodes;
{
using (AGVDataContext ctx = new AGVDataContext())
{
foreach (var item in GetMissionInfos())
{
var mission = ctx.MissionInfos.Where(s => s.missionId.Equals(item.missionId)).FirstOrDefault();
if (mission != null)
{
mission.SetState(item.state);
mission.liftName = item.liftName;
mission.occupiedAgv = item.occupiedAgv;
mission.destinationPoint = item.destinationPoint;
mission.sourcePoint = item.sourcePoint;
}
}
ctx.SaveChanges();
InitMission();
}
}
Log.Info($"任务[{missionInfo.missionId}]更改钢网起始地[{nodes}]成功");
}
}
/// <summary>
/// 根据任务信息得到电梯名称
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!