From ea0628889f64f802768c4fdf17d2223424e5e29f Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期三, 30 十月 2024 11:13:22 +0800
Subject: [PATCH] 1
---
WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 244 +++++++++++++++++++++++++++++++++---------------
1 files changed, 165 insertions(+), 79 deletions(-)
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index 1e28b0a..b1f3bab 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -15,122 +15,208 @@
*----------------------------------------------------------------*/
#endregion << 鐗� 鏈� 娉� 閲� >>
+using AutoMapper;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob;
namespace WIDESEAWCS_Tasks
{
[DisallowConcurrentExecution]
- public class CommonConveyorLineJob : IJob
+ public class CommonConveyorLineJob : JobBase, IJob
{
private readonly ITaskService _taskService;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+ private readonly IRouterService _routerService;
+ private readonly IMapper _mapper;
- public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
+ _routerService = routerService;
+ _mapper = mapper;
}
public Task Execute(IJobExecutionContext context)
{
+ //Console.Out.WriteLine(DateTime.Now);
try
{
CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
- // List<Dt_StationManager> stationManagers = _stationManagerService.GetStationManagers();
- // foreach (var item in stationManagers)
- // {
- // try
- // {
- // ushort value = conveyorLine.GetValue<ConveyorLineDBName, ushort>(ConveyorLineDBName.InteractiveSignal, item.StationCode);
+ if (conveyorLine != null)
+ {
+ List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
+ List<Task> tasks = new List<Task>();
+ foreach (string childDeviceCode in childDeviceCodes)
+ {
+ //Task task = Task.Run(() =>
+ //{
+ ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
+ if (command != null)
+ {
+ DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
+ if (deviceProtocolDetail != null)
+ {
+ MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
+ if (method != null)
+ {
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
+ }
+ else
+ {
+ //todo 鏈壘鍒版柟娉曟椂
+ }
+ }
+ }
+ //});
+ //tasks.Add(task);
+ }
- // DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == value.ToString());
+ Task.WaitAll(tasks.ToArray());
+ }
- // if (deviceProtocolDetail != null)
- // {
- // ConveyorLineTaskCommand? command = new ConveyorLineTaskCommand()
- // {
- // InteractiveSignal = 0,
- // Barcode = "",
- // TargetAddress = Convert.ToInt32(item.DeviceCode),
- // TaskNum = 9988,
- // TrayType = 3
- // };
-
- // SignalType signalType = Enum.Parse<SignalType>(deviceProtocolDetail.ProtocolDetailType);
- // switch (signalType)
- // {
- // case SignalType.InEntranceRequest:
- // command.Barcode = "InEntranceRequest";
- // break;
- // case SignalType.InEntranceResponse:
- // command.Barcode = "InEntranceResponse";
- // break;
- // case SignalType.InEntranceRequestReset:
- // command.Barcode = "InEntranceRequestReset";
- // break;
- // case SignalType.OutEntranceRequest:
- // command.Barcode = "OutEntranceRequest";
- // break;
- // case SignalType.OutEntranceResponse:
- // command.Barcode = "OutEntranceResponse";
- // break;
- // case SignalType.OutEntranceRequestReset:
- // command.Barcode = "OutEntranceRequestReset";
- // break;
- // case SignalType.InStationRequest:
- // command.Barcode = "InStationRequest";
- // break;
- // case SignalType.InStationResponse:
- // command.Barcode = "InStationResponse";
- // break;
- // case SignalType.InStationRequestReset:
- // command.Barcode = "InStationRequestReset";
- // break;
- // case SignalType.OutStationRequest:
- // command.Barcode = "OutStationRequest";
- // break;
- // case SignalType.OutStationResponse:
- // command.Barcode = "OutStationResponse";
- // break;
- // case SignalType.OutStationRequestReset:
- // command.Barcode = "OutStationRequestReset";
- // break;
- // default:
- // command = null;
- // break;
- // }
- // if (command != null)
- // {
- // conveyorLine.SendCommand(command, item.StationCode);
- // Console.Out.WriteLine(command.Serialize());
- // }
-
- // }
-
- // }
- // catch (Exception ex)
- // {
- // Console.Out.WriteLine(item.StationCode + ":" + ex.ToString());
- // }
- // }
}
catch (Exception ex)
{
- Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
+ //Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
}
-
+ finally
+ {
+ WriteDebug("CommonConveyorLineJob", "test");
+ //Console.Out.WriteLine(DateTime.Now);
+ }
return Task.CompletedTask;
}
+
+ /// <summary>
+ /// 杈撻�佺嚎璇锋眰鍏ュ簱
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
+ {
+ Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ if (task != null)
+ {
+ ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
+ taskCommand.InteractiveSignal = command.InteractiveSignal;
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ _taskService.UpdateTaskStatusToNext(task);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ if (task != null)
+ {
+ Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
+ if (newTask != null)
+ {
+ ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
+ taskCommand.InteractiveSignal = command.InteractiveSignal;
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎鍏ュ簱瀹屾垚
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ if (task != null)
+ {
+ conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
+ WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
+ Console.Out.WriteLine(content.Serialize());
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎璇锋眰鍑轰俊鎭�
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ if (task != null)
+ {
+ ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
+ taskCommand.InteractiveSignal = command.InteractiveSignal;
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ _taskService.UpdateTaskStatusToNext(task);
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void RequestOutNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ if (task != null)
+ {
+ Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
+ if (newTask != null)
+ {
+ ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
+ taskCommand.InteractiveSignal = command.InteractiveSignal;
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎鍑哄簱瀹屾垚
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ {
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ if (task != null)
+ {
+ conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
+ WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
+ Console.Out.WriteLine(content.Serialize());
+ }
+ }
}
}
--
Gitblit v1.9.3