change - 添加提升机手动任务操作界面

dev
WenJY 3 days ago
parent 2afe4bd51a
commit 54f8b5a72e

@ -85,6 +85,8 @@ public class TaskCreateService
? HoistPoint(endBuilding, endFloor)
: PosCode(endBuilding, endFloor, endLocation);
var executionMode = manualPutIn ? 1 : 0;
_logger.Info($"创建任务 - {startPoint} ({startBuilding}#_{startFloor}F) → {endPoint} ({endBuilding}#_{endFloor}F)");
// Step 1: BFS 找最短路径(节点序列)
@ -109,7 +111,7 @@ public class TaskCreateService
{
// 13↔14: 廊桥交接 — 13# AGV 送到廊桥,等待 14# AGV
details.Add(NewDetail(taskCode, palletBarcode, materialCode,
taskType, taskCategory, seq++, currentPos, "BRIDGE_13_14", deviceType: 1));
taskType, taskCategory, seq++, currentPos, "BRIDGE_13_14", deviceType: 1, executionMode));
currentPos = "BRIDGE_13_14";
}
// 14↔15: 14# AGV 可直接驶入 15#,不生成过渡段,由下一步直达
@ -123,10 +125,10 @@ public class TaskCreateService
if (currentPos != hoistEntry)
{
details.Add(NewDetail(taskCode, palletBarcode, materialCode,
taskType, taskCategory, seq++, currentPos, hoistEntry, deviceType: 1));
taskType, taskCategory, seq++, currentPos, hoistEntry, deviceType: 1, executionMode));
}
details.Add(NewDetail(taskCode, palletBarcode, materialCode,
taskType, taskCategory, seq++, hoistEntry, hoistExit, deviceType: 2));
taskType, taskCategory, seq++, hoistEntry, hoistExit, deviceType: 2, executionMode));
currentPos = hoistExit;
}
@ -136,7 +138,7 @@ public class TaskCreateService
if (details.Count == 0 || currentPos != endPoint)
{
details.Add(NewDetail(taskCode, palletBarcode, materialCode,
taskType, taskCategory, seq, currentPos, endPoint, deviceType: 1));
taskType, taskCategory, seq, currentPos, endPoint, deviceType: 1, executionMode));
}
_logger.Info($"生成 {details.Count} 条明细");
@ -153,6 +155,7 @@ public class TaskCreateService
materialCode = materialCode,
taskSteps = details.Count,
taskDetails = details,
executionMode = executionMode,
isFlag = 1
};
}
@ -220,7 +223,7 @@ public class TaskCreateService
private static LiveTaskDetail NewDetail(
string taskCode, string palletBarcode, string materialCode,
int taskType, int taskCategory, int seq,
string startPoint, string endPoint, int deviceType) =>
string startPoint, string endPoint, int deviceType, int executionMode) =>
new()
{
taskCode = taskCode,
@ -230,6 +233,7 @@ public class TaskCreateService
startPoint = startPoint,
endPoint = endPoint,
deviceType = deviceType,
executionMode = executionMode,
taskType = taskType,
taskCategory = taskCategory,
taskStatus = 1,

@ -56,15 +56,16 @@ public class HoistDispatchHub
public void ReceivePallet(LiveTaskDetail taskDetail,BaseDeviceInfo deviceInfo)
{
//读取托盘RFID信息
string palletStr = "202606030001";
if (taskDetail.palletBarcode == palletStr)
{
this.TaskRun(deviceInfo);
}
else
{
_logger.Info($"托盘条码与计划不符");
}
// string palletStr = "202606030001";
// if (taskDetail.palletBarcode == palletStr)
// {
// this.TaskRun(deviceInfo);
// }
// else
// {
// _logger.Info($"托盘条码与计划不符");
// }
this.TaskRun(deviceInfo);
}
/// <summary>

@ -144,7 +144,7 @@ api.MapPost("/task/dispatch", (TaskDispatchRequest req, IBaseDeviceInfoService d
api.MapGet("/hoist/free", async (string hostCode) =>
{
var d = await hub.GetFreeHoistAsync(hostCode);
return Results.Ok(new { found = d != null, d?.deviceCode, d?.deviceName });
return Results.Ok(new { found = d != null, d?.deviceCode, d?.deviceName, d?.hostCode, d?.deviceSerialNo });
});
api.MapGet("/health", () => Results.Ok(new { time = DateTime.Now, status = "ok" }));

@ -153,6 +153,14 @@ public class LiveTaskDetail
[SugarColumn(ColumnName = "is_flag")]
public int? isFlag { get; set; }
/// <summary>
/// Desc:执行方式0-自动执行1-手动执行
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "execution_mode")]
public int? executionMode { get; set; }
/// <summary>
/// Desc:备注
/// Default:

@ -145,6 +145,14 @@ public class LiveTaskQueue
[SugarColumn(ColumnName = "is_flag")]
public int? isFlag { get; set; }
/// <summary>
/// Desc:执行方式0-自动执行1-手动执行
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "execution_mode")]
public int? executionMode { get; set; }
/// <summary>
/// Desc:备注
/// Default:

@ -61,7 +61,7 @@ public class LiveTaskQueueServiceImpl: BaseServiceImpl<LiveTaskQueue>, ILiveTask
public List<LiveTaskQueue> getLiveTaskQueues(Expression<Func<LiveTaskQueue, bool>> exp = null)
{
try
{
{
var res = _rep.Context.Queryable<LiveTaskQueue>()
.Includes(x => x.taskDetails) // 先加载所有
.Where(exp)
@ -82,6 +82,8 @@ public class LiveTaskQueueServiceImpl: BaseServiceImpl<LiveTaskQueue>, ILiveTask
taskSteps = task.taskSteps,
isFlag = task.isFlag,
remark = task.remark,
taskStatus = task.taskStatus,
executionMode = task.executionMode,
taskDetails = task.taskDetails.AsQueryable()
//.Where(detailWhere) // 应用子表查询条件
.Where(p => p.isFlag == 1)

@ -96,6 +96,7 @@ public partial class App : Application
services.AddTransient<ViewModels.Task.TaskQueueViewModel>();
services.AddTransient<ViewModels.Task.TaskDetailViewModel>();
services.AddTransient<ViewModels.Task.CreateTaskViewModel>();
services.AddTransient<ViewModels.Task.ManualTaskViewModel>();
services.AddTransient<ViewModels.HMI.PalletizerHMIViewModel>();
// 引擎进程管理

@ -60,6 +60,7 @@ public partial class NavigationViewModel : ObservableObject
TopMenuItems.Add(new TopMenuItem("任务管理", new List<SubMenuItem>
{
new("创建任务", () => NavigateTo<CreateTaskViewModel>("任务管理")),
new("手动执行", () => NavigateTo<ManualTaskViewModel>("任务管理")),
new("任务队列", () => NavigateTo<TaskQueueViewModel>("任务管理")),
new("任务明细", () => NavigateTo<TaskDetailViewModel>("任务管理")),
}));

@ -44,8 +44,8 @@ public class HoistDispatchHubTest
_hub.TaskDispatch(info,new LiveTaskDetail()
{
deviceType = 2,
startPoint = "15#_L1_HOIST",
endPoint = "15#_L2_HOIST",
startPoint = "15#_L2_HOIST",
endPoint = "15#_L1_HOIST",
materialBarcode = "202606180001",
taskCode = "202606180001",
taskType = 1

@ -62,6 +62,9 @@ namespace Sln.Wcs
handler.ServerCertificateCustomValidationCallback = (_, _, _, _) => true;
});
var service = serviceProvider.GetService<HoistDispatchHubTest>();
service.Run();
// var service = serviceProvider.GetService<HikRoBotService>();
// var res = service.GbTaskSubmit(new GbTaskSubmitDto()
// {
@ -105,7 +108,7 @@ namespace Sln.Wcs
services.AddSingleton(typeof(SerilogHelper));
services.AddSingleton(typeof(MaterialInStoreTest));
services.AddSingleton(typeof(HoistDispatchHubTest));
services.AddSqlSugarSetup();

Loading…
Cancel
Save