From 6695afe1e1c478dbb599a1d382d8d6628b456d03 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 18 一月 2025 17:30:49 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/StackerCraneJob_BC.cs | 89 +++++++++++++++++++++++++++++++++++---------
1 files changed, 70 insertions(+), 19 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
index b206974..7e89bd0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
@@ -28,6 +28,7 @@
using WIDESEAWCS_TaskInfoService;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_QuartzJob.Repository;
+using Autofac.Core;
namespace WIDESEAWCS_Tasks
{
@@ -42,6 +43,7 @@
private readonly IStationMangerRepository _stationMangerRepository;
private readonly IRouterRepository _routerRepository;
private List<Dt_ApiInfo> apiInfos;
+ private readonly List<Dt_WarehouseDevice> warehouseDevices;
public StackerCraneJob_BC(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository)
{
@@ -66,15 +68,34 @@
apiInfos = infos;
}
}
+
+
+ string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+ if (!string.IsNullOrEmpty(warehouseDevicesStr))
+ {
+ warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+ }
+ else
+ {
+ warehouseDevices = new List<Dt_WarehouseDevice>();
+ }
}
public Task Execute(IJobExecutionContext context)
{
try
{
+ Console.WriteLine(DateTime.Now);
CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
if (commonStackerCrane != null)
{
+ Dt_WarehouseDevice? warehouseDevice = warehouseDevices.FirstOrDefault(x => x.DeviceCode == commonStackerCrane.DeviceCode);
+ if (warehouseDevice == null)
+ {
+ WriteError(commonStackerCrane.DeviceName, $"璇烽厤缃粨搴撹澶囦俊鎭�");
+ return Task.CompletedTask;
+ }
+
if (!commonStackerCrane.IsEventSubscribed)
{
commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
@@ -115,14 +136,25 @@
/// <param name="e"></param>
private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e)
{
- CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
- if (commonStackerCrane != null)
+ try
{
- if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+ CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
+ if (commonStackerCrane != null)
{
- StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode);
- commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+ //if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+ {
+ if (e.TaskNum != 0)
+ {
+ WriteDebug(commonStackerCrane.DeviceCode, $"璇诲彇鍒颁换鍔″畬鎴�,浠诲姟鍙�:{e.TaskNum}");
+ StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode);
+ commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+ }
+ }
}
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(StackerCraneJob_BC), "浠诲姟瀹屾垚澶辫触", ex);
}
}
@@ -138,16 +170,25 @@
Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneStationCode == task.NextAddress);
if (stationManger == null)
{
- _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
+ //_taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
_taskService.UpdateTaskExceptionMessage(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
+ WriteError(deviceCode, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
return WebResponseContent.Instance.Error($"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
}
Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode);
if (router == null)
{
- _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
- _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
- return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ router = _routerRepository.QueryFirst(x=>x.ChildPosi == deviceCode && x.ChildPosiDeviceCode == stationManger.StationDeviceCode && x.NextPosi == stationManger.StationCode && x.InOutType == task.TaskType && x.IsEnd);
+ if (router != null && router.IsEnd)
+ {
+ _taskService.TaskCompleted(taskNum);
+ }
+ else
+ {
+ _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ WriteError(deviceCode, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ }
}
_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
@@ -185,6 +226,16 @@
/// <returns></returns>
private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
{
+ try
+ {
+ Dt_Task oldTask = _taskRepository.QueryFirst(x => x.DeviceCode == commonStackerCrane.DeviceCode && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt());
+ if (oldTask != null)
+ {
+ StackerCraneTaskCompleted(oldTask.TaskNum, commonStackerCrane.DeviceCode);
+ }
+ }
+ catch { }
+
Dt_Task task;
if (commonStackerCrane.LastTaskType == null)
{
@@ -234,15 +285,15 @@
if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress;
- if (string.IsNullOrEmpty(url))
- {
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
- WriteError(commonStackerCrane.DeviceCode, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
- _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
- return null;
- }
- HttpHelper.Post($"{url}?taskNum={task.TaskNum}&locationCode={task.NextAddress}", "");//todo 璋冪敤WMS浠诲姟瀹屾垚鏂规硶
+ //string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.WMSIsReloaction.ToString())?.ApiAddress;
+ //if (string.IsNullOrEmpty(url))
+ //{
+ // _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
+ // WriteError(commonStackerCrane.DeviceCode, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
+ // _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒癢MS绉诲簱鍒ゆ柇鎺ュ彛");
+ // return null;
+ //}
+ //HttpHelper.Post($"{url}?taskNum={task.TaskNum}&locationCode={task.NextAddress}", "");//todo 璋冪敤WMS浠诲姟瀹屾垚鏂规硶
}
return task;
@@ -296,7 +347,7 @@
stackerCraneTaskCommand.Barcode = task.PalletCode;
stackerCraneTaskCommand.TaskNum = task.TaskNum;
stackerCraneTaskCommand.WorkType = 1;
- stackerCraneTaskCommand.TrayType = (Int16)task.PalletType;
+ stackerCraneTaskCommand.TrayType = (short)task.PalletType;
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
{
string[] startCodes = task.CurrentAddress.Split("-");
--
Gitblit v1.9.3