Commit 07c67e06 张东亮

单独钢网入库运输

1 个父辈 3d426a33
...@@ -61,7 +61,7 @@ namespace DeviceLibrary.bean.job ...@@ -61,7 +61,7 @@ namespace DeviceLibrary.bean.job
runInfo = $"{JobParam.SrcNode.AliceName}门已开启,进电梯取料点"; runInfo = $"{JobParam.SrcNode.AliceName}门已开启,进电梯取料点";
ToPutShelfOn(agv, JobParam.SrcNode.Name); 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; JobRunStep.Msg = runInfo;
} }
} }
...@@ -99,7 +99,7 @@ namespace DeviceLibrary.bean.job ...@@ -99,7 +99,7 @@ namespace DeviceLibrary.bean.job
bool rtn = lift.LiftContext.AGVLeave(JobParam.SrcNode.Name, agv, false); bool rtn = lift.LiftContext.AGVLeave(JobParam.SrcNode.Name, agv, false);
runInfo = $"离开{JobParam.SrcNode.AliceName},关闭门:{rtn}"; 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; JobRunStep.Msg = runInfo;
ClearLiftNodeOccupied(agv); ClearLiftNodeOccupied(agv);
} }
...@@ -116,7 +116,7 @@ namespace DeviceLibrary.bean.job ...@@ -116,7 +116,7 @@ namespace DeviceLibrary.bean.job
//else //else
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_07_ToLine); 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); MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.送料, out string msg);
AllocateTask(agv, $"{GetTargetName(JobParam.CurTargetNode)}_{SettingString.TakeShelfOff}"); AllocateTask(agv, $"{GetTargetName(JobParam.CurTargetNode)}_{SettingString.TakeShelfOff}");
......
...@@ -63,18 +63,18 @@ namespace DeviceLibrary ...@@ -63,18 +63,18 @@ namespace DeviceLibrary
{ {
if (agv.TaskRunState.CheckTaskFinished(agv.Name)) if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{ {
if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库)) //if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库))
{ //{
JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc); // JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc);
//上报状态 // //上报状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // 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, // service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"取车")); // $"取车"));
runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点"; // runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点";
ToTakeShelfOff(agv, JobParam.SrcNode.Name); // ToTakeShelfOff(agv, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo; // JobRunStep.Msg = runInfo;
} //}
else //else
{ {
JobRunStep.ToNextStep(RunStep.LineToLift_WaitConfirm); JobRunStep.ToNextStep(RunStep.LineToLift_WaitConfirm);
runInfo = $"钢网领用任务,直接去电梯口"; runInfo = $"钢网领用任务,直接去电梯口";
...@@ -160,8 +160,6 @@ namespace DeviceLibrary ...@@ -160,8 +160,6 @@ namespace DeviceLibrary
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, 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, service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.CurTargetNode.Name}")); $"到达{JobParam.CurTargetNode.Name}"));
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.到达电梯, out string msg);
runInfo = $"到达{JobParam.CurTargetNode.AliceName},请求电梯并等待开门"; runInfo = $"到达{JobParam.CurTargetNode.AliceName},请求电梯并等待开门";
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
//开始请求电梯 //开始请求电梯
......
...@@ -348,42 +348,87 @@ namespace DeviceLibrary ...@@ -348,42 +348,87 @@ namespace DeviceLibrary
} }
else 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); Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
string[] destTmp = missionInfo.destinationPoint.Split(','); string[] dests = missionInfo.destinationPoint.Split(',');
string[] dests = destTmp.Distinct().ToArray();
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node); Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo); JobParam jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1) if (dests.Length > 1)
{ {
for (int i = 1; i < dests.Length; i++) for (int i = 1; i < dests.Length; i++)
{ {
Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node); Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
if (node != null) if (node != null)
jobParam.TargetNodes.Add(node);
else
{ {
LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}"); Node tmp = jobParam.TargetNodes.Find(s => s.Name.Equals(node.Name));
job = null; if (tmp == null)
{
jobParam.TargetNodes.Add(node);
}
} }
} }
} }
job = new LiftToLinesJob(jobParam); MissionManager.SetMissionOccupied(missionInfo, agv);
job.JobRunStep.ToNextStep(RunStep.SD_LiftToLine_06_CloseLiftDoor); job = new SteelLiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_05_LeaveLift);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}"; job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
} }
} else
else if (JobRunStep.IsStep(RunStep.Switch_19_ReturnShelf)) {
{ Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
JobRunStep.ToNextStep(RunStep.END); Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
MissionInfo missionInfo = MissionManager.GetMission(liftMission.missionId); JobParam jobParam = new JobParam(src, dest, null, missionInfo);
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift); MissionManager.SetMissionOccupied(missionInfo, agv);
Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node); job = new ShelfBackLiftToStoreJob(jobParam);
JobParam jobParam = new JobParam(src, dest, null, missionInfo); job.JobRunStep.ToNextStep(RunStep.ShelfBack_LiftToStore_05_CloseLiftDoor);
MissionManager.SetMissionOccupied(missionInfo, agv); job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
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)) else if (JobRunStep.IsStep(RunStep.END))
{ {
......
...@@ -22,7 +22,7 @@ namespace DeviceLibrary.bean.jobType ...@@ -22,7 +22,7 @@ namespace DeviceLibrary.bean.jobType
{ {
Node src = manager.NodeManager.GetNode(liftname, NodeType.Lift); Node src = manager.NodeManager.GetNode(liftname, NodeType.Lift);
string[] dests = missionInfo.destinationPoint.Split(','); 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 jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node); jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1) if (dests.Length > 1)
......
...@@ -221,7 +221,7 @@ namespace DeviceLibrary.manager ...@@ -221,7 +221,7 @@ namespace DeviceLibrary.manager
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) && 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(); agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
if (missionInfo != null && AgvCanGetMission(missionInfo)) if (missionInfo != null && AgvCanGetMission(missionInfo))
{ {
...@@ -319,7 +319,10 @@ namespace DeviceLibrary.manager ...@@ -319,7 +319,10 @@ namespace DeviceLibrary.manager
&& w.state != MissionState.取消 && w.state != MissionState.完成); && w.state != MissionState.取消 && w.state != MissionState.完成);
missionInfo = missions.Find(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) && missionInfo = missions.Find(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.到达电梯 && s.state <= MissionState.电梯到达) (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)) if (missionInfo != null && AgvCanGetMission(missionInfo))
{ {
return missionInfo; return missionInfo;
...@@ -395,7 +398,7 @@ namespace DeviceLibrary.manager ...@@ -395,7 +398,7 @@ namespace DeviceLibrary.manager
{ {
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && 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.state >= MissionState.返回到达电梯内 && s.state <= MissionState.返回电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库))) && (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault(); && agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
...@@ -417,7 +420,7 @@ namespace DeviceLibrary.manager ...@@ -417,7 +420,7 @@ namespace DeviceLibrary.manager
{ {
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && 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.state >= MissionState.电梯运行 && s.state <= MissionState.电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库))) && (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault(); && agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
...@@ -651,7 +654,7 @@ namespace DeviceLibrary.manager ...@@ -651,7 +654,7 @@ namespace DeviceLibrary.manager
Log.Info($"设置任务[{missionInfo.missionId}] 状态为[{missionState}]成功"); 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); MissionInfo missionInfo = GetMission(missionId);
if (missionInfo != null) if (missionInfo != null)
...@@ -669,6 +672,7 @@ namespace DeviceLibrary.manager ...@@ -669,6 +672,7 @@ namespace DeviceLibrary.manager
mission.liftName = item.liftName; mission.liftName = item.liftName;
mission.occupiedAgv = item.occupiedAgv; mission.occupiedAgv = item.occupiedAgv;
mission.destinationPoint = item.destinationPoint; mission.destinationPoint = item.destinationPoint;
mission.sourcePoint= item.sourcePoint;
} }
} }
ctx.SaveChanges(); ctx.SaveChanges();
...@@ -680,6 +684,37 @@ namespace DeviceLibrary.manager ...@@ -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>
/// 根据任务信息得到电梯名称 /// 根据任务信息得到电梯名称
/// </summary> /// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!