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

dev
WenJY 3 weeks ago
parent 2afe4bd51a
commit 54f8b5a72e

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

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

@ -144,7 +144,7 @@ api.MapPost("/task/dispatch", (TaskDispatchRequest req, IBaseDeviceInfoService d
api.MapGet("/hoist/free", async (string hostCode) => api.MapGet("/hoist/free", async (string hostCode) =>
{ {
var d = await hub.GetFreeHoistAsync(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" })); api.MapGet("/health", () => Results.Ok(new { time = DateTime.Now, status = "ok" }));

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

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

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

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

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

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

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

Loading…
Cancel
Save