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}");
......
......@@ -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!