From 4d5db2fa80e37839bbe2ceeb22e501afd583f8af Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期一, 02 三月 2026 15:29:28 +0800
Subject: [PATCH] 1
---
WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 287 +++++++++++++++++++++-----------------------------------
1 files changed, 109 insertions(+), 178 deletions(-)
diff --git a/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 070f4fa..e03037e 100644
--- a/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -1,27 +1,10 @@
-锘縰sing Autofac.Core;
-using Microsoft.AspNetCore.Components.Routing;
-using Microsoft.AspNetCore.Hosting;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
-using Quartz;
-using System;
-using System.Collections.Generic;
+锘縰sing Quartz;
using System.Diagnostics.CodeAnalysis;
-using System.Diagnostics.Eventing.Reader;
-using System.Linq;
-using System.Reflection.Metadata;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.Log;
using WIDESEAWCS_Common.TaskEnum;
-using WIDESEAWCS_Core;
-using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.DeviceBase;
-using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
@@ -36,20 +19,17 @@
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly ITaskRepository _taskRepository;
private readonly IRouterService _routerService;
- private readonly IPlatformStationService _PlatformStationService;
- public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IPlatformStationService platformStation)
+ public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
_taskRepository = taskRepository;
_routerService = routerService;
- _PlatformStationService= platformStation;
}
public Task Execute(IJobExecutionContext context)
{
-
try
{
CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
@@ -75,7 +55,8 @@
bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
if (sendFlag)
{
- _taskService.UpdateTaskStatusToNext(task.TaskNum);
+ commonStackerCrane.LastTaskType = task.TaskType;
+ //_taskService.UpdateTaskStatusToNext(task.TaskNum);
}
}
}
@@ -85,7 +66,7 @@
}
catch (Exception ex)
{
- //Console.WriteLine(nameof(CommonStackerCraneJob) + ":" + ex.ToString());
+ Console.WriteLine(nameof(CommonStackerCraneJob) + ":" + ex.ToString());
}
return Task.CompletedTask;
}
@@ -102,7 +83,8 @@
{
if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
{
- _taskService.StackCraneTaskCompleted(e.TaskNum);
+ //Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
+ // _taskService.StackCraneTaskCompleted(e.TaskNum);
commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
}
}
@@ -116,49 +98,51 @@
private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
{
Dt_Task task;
- task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
-
- if (task != null && task.TaskType== (int)TaskOutboundTypeEnum.Outbound)
+ if (commonStackerCrane.LastTaskType == null)
{
- string[] targetCodes = task.SourceAddress.Split("-");
- if (targetCodes[4] == "02")
+ task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+ }
+ else
+ {
+ if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
-
- Dt_Task taskst = OutTaskMovelibrary(task);
- if (taskst != null)
- {
- if(taskst.TaskType == (int)TaskRelocationTypeEnum.Relocation)
- {
- return taskst;
- }
- else
- {
- if(taskst.TargetAddress== "R02-001-021-001-02" || taskst.TargetAddress == "R02-001-022-001-02")
- {
- return taskst;
- }
- else
- {
- if (OutTaskStationIsOccupied(taskst) != null)
- {
- return taskst;
- }
- }
-
- }
-
- }
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+ if (task == null)
+ {
+ task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ }
}
else
{
- if (OutTaskStationIsOccupied(task) != null)
+ task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ if (task == null)
{
- return task;
+ task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+ }
+ }
+ }
+
+ if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+ {
+ if (OutTaskStationIsOccupied(task) != null || true)
+ {
+ return task;
+ }
+ else
+ {
+ List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
+ List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+ foreach (var item in tasks)
+ {
+ if (OutTaskStationIsOccupied(task) != null)
+ {
+ return task;
+ }
}
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
}
}
+
return task;
}
@@ -169,77 +153,31 @@
/// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
{
- if(task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ Dt_Router? router = _routerService.QueryNextRoutes(task.DeviceCode, task.NextAddress).FirstOrDefault();
+ if (router != null)
{
- string plcAddress = _PlatformStationService.GetOutSCName(task.Roadway,task.Station_storey);
- IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1002");
+ IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
if (device != null)
{
+ if (device.DeviceCode == "YMCTSJ" || task.DeviceCode == "CSJCSC01") return task;
CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
- DeviceProDTO? deviceProDTO = GetDeviceProDTO(conveyorLine, plcAddress, "Free");
- if (deviceProDTO != null)
+ if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
{
- bool B_Event_Test = GetLine(conveyorLine, deviceProDTO.DeviceProAddress); //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
- if (B_Event_Test)
- {
- return task;
- }
+ return task;
}
}
else
{
- _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵task.SourceAddress}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+ _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
}
+ }
+ else
+ {
+ _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
}
return null;
}
- /// <summary>
- /// 鍑哄簱浠诲姟鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴揗ove the library
- /// </summary>
- /// <param name="task">浠诲姟瀹炰綋</param>
- /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
- private Dt_Task? OutTaskMovelibrary([NotNull] Dt_Task task)
- {
- try
- {
- string[] targetCodes = task.SourceAddress.Split("-");
- if (targetCodes[1] == "001")
- {
- targetCodes[1] = "002";
-
- }
- else if (targetCodes[1] == "004")
- {
- targetCodes[1] = "003";
- }
- targetCodes[4] = "01";
- string SourceAddress = string.Join("-", targetCodes); //缁勮娴呭簱浣嶅湴鍧�
- Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress).FirstOrDefault(); //鎵炬祬搴撲綅鏄惁鏈変换鍔�
- if (tasks != null)
- {
- return tasks;
- }
- else
- {
- //鍚憌ms鐢宠鍒ゆ柇娴呭簱浣嶆槸鍚︽湁璐э紝鏄惁闇�瑕佽繘琛岀Щ搴�
- Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary(task);
- if (taskst != null)
- {
- return taskst;
- }
- }
- }
- catch (Exception ex)
- {
-
- throw;
- }
- return null;
- }
-
-
-
/// <summary>
/// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel
/// </summary>
@@ -249,31 +187,28 @@
public StackerCraneTaskCommand? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task)
{
StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand();
- stackerCraneTaskCommand.Barcode = ""; /*task.PalletCode;*/
+
+ stackerCraneTaskCommand.Barcode = task.PalletCode;
stackerCraneTaskCommand.TaskNum = task.TaskNum;
stackerCraneTaskCommand.WorkType = 1;
- stackerCraneTaskCommand.TrayType = (short)task.PalletCodequantity; //寰呮敼鍔�
+ stackerCraneTaskCommand.TrayType = 1;
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
{
- string[] targetCodest = task.SourceAddress.Split("-");
- if (targetCodest.Length == 5)
+ //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
+ //if (routers.Count > 0)
+ //{
+ string[] startCodes = task.CurrentAddress.Split("-");
+
+ stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]);
+ stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]);
+ stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]);
+
+ string[] targetCodes = task.NextAddress.Split("-");
+ if (targetCodes.Length == 3)
{
- stackerCraneTaskCommand.StartRow = Convert.ToInt16(targetCodest[1]);
- stackerCraneTaskCommand.StartColumn = Convert.ToInt16(targetCodest[2]);
- stackerCraneTaskCommand.StartLayer = Convert.ToInt16(targetCodest[3]);
- }
- else
- {
- //鏁版嵁閰嶇疆閿欒
- _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱璧风偣閿欒锛岃捣鐐癸細銆恵task.SourceAddress}銆�");
- return null;
- }
- string[] targetCodes = task.TargetAddress.Split("-");
- if (targetCodes.Length == 5)
- {
- stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]);
- stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]);
- stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]);
+ stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+ stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+ stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
}
else
{
@@ -281,44 +216,52 @@
_taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
return null;
}
+ //}
+ //else
+ //{
+ // _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅");
+ // return null;
+ //}
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- string[] sourceCodes = task.SourceAddress.Split("-");
- if (sourceCodes.Length == 5)
+ //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
+ //if (routers.Count > 0)
{
- stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]);
- stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]);
- stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]);
+ string[] targetCodes = task.NextAddress.Split("-");
+
+ stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+ stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+ stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+
+ string[] sourceCodes = task.CurrentAddress.Split("-");
+ if (sourceCodes.Length == 3)
+ {
+ stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+ stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+ stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+ }
+ else
+ {
+ //鏁版嵁閰嶇疆閿欒
+ _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+ return null;
+ }
}
- else
- {
- //鏁版嵁閰嶇疆閿欒
- _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
- return null;
- }
- string[] sourceCodest = task.TargetAddress.Split("-");
- if (sourceCodest.Length == 5)
- {
- stackerCraneTaskCommand.EndRow = Convert.ToInt16(sourceCodest[1]);
- stackerCraneTaskCommand.EndColumn = Convert.ToInt16(sourceCodest[2]);
- stackerCraneTaskCommand.EndLayer = Convert.ToInt16(sourceCodest[3]);
- }
- else
- {
- //鏁版嵁閰嶇疆閿欒
- _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.TargetAddress}銆�");
- return null;
- }
+ //else
+ //{
+ // _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅");
+ // return null;
+ //}
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
{
string[] targetCodes = task.NextAddress.Split("-");
- if (targetCodes.Length == 5)
+ if (targetCodes.Length == 3)
{
- stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]);
- stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]);
- stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]);
+ stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+ stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+ stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
}
else
{
@@ -327,11 +270,11 @@
return null;
}
string[] sourceCodes = task.CurrentAddress.Split("-");
- if (sourceCodes.Length == 5)
+ if (sourceCodes.Length == 3)
{
- stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]);
- stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]);
- stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]);
+ stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+ stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+ stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
}
else
{
@@ -341,18 +284,6 @@
}
}
return stackerCraneTaskCommand;
- }
-
-
- //鏍瑰湴鍧�璇诲彇杈撻�佺嚎淇℃伅
- public bool GetLine(CommonConveyorLine conveyorLine, string DeviceProDataBlock)
- {
- return conveyorLine.Communicator.Read<bool>(DeviceProDataBlock);
- }
- //鑾峰彇杈撻�佺嚎瀹炰緥
- public DeviceProDTO? GetDeviceProDTO(CommonConveyorLine conveyorLine, string SCAddress, string Interactivet)
- {
- return conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet);
}
}
}
--
Gitblit v1.9.3