From 74854de51af1fa69a8385174a463c01065fcf570 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 30 十月 2025 16:58:11 +0800
Subject: [PATCH] 1
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 212 +++++++++++-----------------------------------------
1 files changed, 47 insertions(+), 165 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
index 8aacd38..24c5e66 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
@@ -17,9 +17,12 @@
using AutoMapper;
using HslCommunication;
+using HslCommunication.Profinet.OpenProtocol;
using Newtonsoft.Json;
using Quartz;
using System.Reflection;
+using System.Text;
+using System.Web;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
@@ -37,6 +40,7 @@
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_SignalR;
using WIDESEAWCS_Tasks.ConveyorLineJob;
@@ -48,8 +52,6 @@
public partial class CommonConveyorLineJob : JobBase, IJob
{
private readonly ITaskService _taskService;
- private readonly IRGVTaskService _rgvtaskService;
- private readonly IRGVTask_HtyService _rgvtask_HtyService;
private readonly ITaskRepository _taskRepository;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
@@ -58,12 +60,12 @@
private readonly IDt_StationManagerRepository _stationManagerRepository;
private readonly IMapper _mapper;
private readonly ICacheService _cacheService;
+ private readonly IDeviceInfoRepository _deviceInfoRepository;
private readonly INoticeService _noticeService;
private static List<string>? userTokenIds;
private static List<int>? userIds;
- public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository, IRGVTaskService rgvtaskService, IRGVTask_HtyService rgvtask_HtyService,
- IDt_StationManagerRepository stationManagerRepository)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, IDeviceInfoRepository deviceInfoRepository)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
@@ -73,9 +75,8 @@
_cacheService = cacheService;
_noticeService = noticeService;
_taskRepository = taskRepository;
- _rgvtaskService = rgvtaskService;
- _rgvtask_HtyService = rgvtask_HtyService;
_stationManagerRepository = stationManagerRepository;
+ _deviceInfoRepository = deviceInfoRepository;
}
public async Task Execute(IJobExecutionContext context)
@@ -106,7 +107,6 @@
try
{
ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode);
- //var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, station.stationChildCode);
if (command != null)
{
#region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
@@ -118,7 +118,6 @@
userTokenIds = tokenInfos.Select(x => x.Token_ID).ToList();
userIds = tokenInfos.Select(x => x.UserId).ToList();
}
-
#endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
// 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍
@@ -131,6 +130,7 @@
foreach (var item in deviceProtocolDetails)
{
int itemValue = Convert.ToInt32(item.ProtocalDetailValue);
+ _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { station.stationChildCode, InStock = structs[itemValue], Roadway = station.Roadway + station.stationFloor });
if (structs[itemValue] == true)
{
MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
@@ -163,15 +163,22 @@
var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵station.stationChildCode}銆戣姹傚彇璐�";
await LogAndWarn(conveyorLine.DeviceName, log);
- var task = _taskService.QueryConveyorLineTask(station.stationChildCode);
- //if (task != null)
- //{
- // RequestInOrOutbound(command, conveyorLine, station, task);
- //}
- //else
- //{
- await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, task);
- //}
+ if (station.stationChildCode == "3004")
+ {
+ var taskIn = _taskRepository.QueryFirst(x => x.TaskNum == command.TaskNum && x.NextAddress == station.stationChildCode && x.TaskType == (int)TaskInboundTypeEnum.Inbound && x.TaskState == (int)TaskInStatusEnum.HoistInExecuting);
+ if (taskIn != null)
+ {
+ Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == taskIn.Roadway && x.stationType == 3 && x.stationFloor == taskIn.Floor);
+ taskIn.CurrentAddress = station.stationChildCode;
+ taskIn.NextAddress = stationManager.stationChildCode;
+ taskIn.TaskState = (int)TaskInStatusEnum.InNew;
+ _taskRepository.UpdateData(taskIn);
+ }
+ }
+
+ var task = _taskService.QueryConveyorLineTask(station.stationChildCode, command.TaskNum);
+
+ await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, task);
}
catch (Exception ex)
{
@@ -186,18 +193,25 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public async Task ConveyorLineFinish(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station)
+ public async Task ConveyorLineFinish(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager stationManager)
{
try
{
// 杈撳嚭淇℃伅锛岃〃绀虹珯鍙拌姹傚彇璐�
- var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵station.stationChildCode}銆�,浠诲姟鍙�:銆恵command.TaskNum}銆戝畬鎴�";
+ var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵stationManager.stationChildCode}銆�,浠诲姟鍙�:銆恵command.TaskNum}銆戝畬鎴�";
await LogAndWarn(conveyorLine.DeviceName, log);
- var task = _taskService.QueryConveyorLineFinishTask(station.stationChildCode);
+ var task = _taskService.QueryConveyorLineFinishTask(stationManager.stationChildCode, command.TaskNum);
//鏀规煡璇㈡柟娉�
-
- HandleFinishTaskAsync(conveyorLine, command, station.stationChildCode, task);
+ if (stationManager.stationType == 5 || stationManager.stationType == 4)
+ {
+ // 濡傛灉浠诲姟瀛樺湪
+ if (task != null)
+ {
+ Thread.Sleep(1000);
+ _taskService.UpdateTaskStatusToNext(task);
+ }
+ }
}
catch (Exception ex)
@@ -212,88 +226,8 @@
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
/// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
- public void RequestInOrOutbound(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station,Dt_Task task)
+ public void RequestNextAddress(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station, Dt_Task task)
{
- try
- {
- // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮佸拰瀛愯澶囦唬鐮侊紝浠ュ強浠诲姟淇℃伅
- var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎,task{task.ToJsonString()}";
- ConsoleHelper.WriteSuccessLine(logs);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, logs);
-
- // 濡傛灉浠诲姟涓嶄负绌猴紝鍒欐墽琛屼互涓嬫搷浣�
- if (task != null)
- {
- ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite()
- {
- TaskNum = Convert.ToInt16(task.TaskNum),
- TargetAddress = Convert.ToInt16(task.NextAddress),
- WriteInteractiveSignal = task.TaskType == (int)TaskOutboundTypeEnum.Outbound ? (byte)Convert.ToSByte(2) : (byte)Convert.ToSByte(1)
- };
-
- // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜鍜屼笅涓�鐩爣鍦板潃
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
- ConsoleHelper.WriteSuccessLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
- var result = SendCommand(taskCommand, conveyorLine, station.stationChildCode);
- if (result)
- {
- _taskService.UpdateTaskStatusToNext(task);
- }
-
- }
- }
- catch (Exception ex)
- {
- }
- }
-
- /// <summary>
- /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void ConveyorLineInOrOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station, Dt_Task task)
- {
- // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮佷互鍙婅姹傚嚭搴撲笅涓�鍦板潃鐨勫瓙璁惧浠g爜
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱瀹屾垚";
- ConsoleHelper.WriteSuccessLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
- // 濡傛灉浠诲姟瀛樺湪
- if (task != null)
- {
- _taskService.UpdateTaskStatusToNext(task);
-
- }
- }
-
-
-
- /// <summary>
- /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void RequestNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station, Dt_Task task)
- {
- // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮佷互鍙婅姹傚嚭搴撲笅涓�鍦板潃鐨勫瓙璁惧浠g爜
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃";
- ConsoleHelper.WriteSuccessLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
- // 濡傛灉浠诲姟瀛樺湪
if (task != null)
{
ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite()
@@ -303,53 +237,23 @@
WriteInteractiveSignal = task.TaskType == (int)TaskOutboundTypeEnum.Outbound ? (byte)Convert.ToSByte(2) : (byte)Convert.ToSByte(1)
};
- // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜浠ュ強涓嬩竴鐩爣鍦板潃
- var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
- ConsoleHelper.WriteSuccessLine(logs);
+ var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戜笅涓�鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆戣緭閫佺嚎,task{task.ToJsonString()}";
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, logs);
+ ConsoleHelper.WriteSuccessLine(log);
+ _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+ WriteInfo(conveyorLine.DeviceName, log);
var result = SendCommand(taskCommand, conveyorLine, station.stationChildCode);
if (result)
{
+ Thread.Sleep(1000);
_taskService.UpdateTaskStatusToNext(task);
+
}
}
-
}
-
- /// <summary>
- /// 杈撻�佺嚎鍑哄簱瀹屾垚
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station,Dt_Task task)
- {
- try
- {
- // 鎵撳嵃鎴愬姛淇℃伅锛岃〃绀烘墭鐩樺凡鍒拌揪鎸囧畾杈撻�佺嚎骞跺畬鎴愬嚭搴�
- var logs = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚";
- ConsoleHelper.WriteSuccessLine(logs);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, logs);
- ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite()
- {
- TaskNum = 100,
- TargetAddress = Convert.ToInt16(station.stationNextChildCode),
- WriteInteractiveSignal = (byte)Convert.ToSByte(3)
- };
- var result = SendCommand(taskCommand, conveyorLine, station.stationChildCode);
-
- }
- catch (Exception ex)
- {
- }
- }
/// <summary>
/// 杈撻�佺嚎鎶ヨ
/// </summary>
@@ -362,7 +266,7 @@
var task = _taskRepository.QueryFirst(x => x.TaskNum == command.TaskNum);
- conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), station.stationChildCode);
+ //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), station.stationChildCode);
}
public async Task LogAndWarn(string deviceName, string log, string color = "red")
@@ -374,35 +278,13 @@
public bool SendCommand(ConveyorLineTaskCommandWrite taskCommand, CommonConveyorLine conveyorLine, string childDeviceCode)
{
- conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
+ conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
Thread.Sleep(100);
- conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(taskCommand.TaskNum), childDeviceCode);
+ conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(taskCommand.TaskNum), childDeviceCode);
Thread.Sleep(100);
conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(taskCommand.WriteInteractiveSignal), childDeviceCode);
- for (int i = 0; i < 6; i++)
- {
- ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
- if (command != null)
- {
- if (command.TaskNum == taskCommand.TaskNum && command.TargetAddress == taskCommand.TargetAddress)
- {
- WriteInfo(conveyorLine.DeviceName, $"鍐欏叆浠诲姟鎴愬姛鍐欏叆娆℃暟{i}鍐欏叆浠诲姟銆恵JsonConvert.SerializeObject(taskCommand)}銆�");
- return true;
- }
- if (command.TargetAddress != taskCommand.TargetAddress)
- {
- conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
- Thread.Sleep(100);
- }
- if (command.TaskNum != taskCommand.TaskNum)
- {
- conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, taskCommand.TaskNum, childDeviceCode); Thread.Sleep(100);
- }
- }
- }
- WriteInfo(conveyorLine.DeviceName, $"鍐欏叆浠诲姟澶辫触浠诲姟鍙枫�恵taskCommand.TaskNum}銆戞墭鐩樺彿銆恵taskCommand.Barcode}銆戠洰鏍囧湴鍧�銆恵taskCommand.TargetAddress}銆戝綋鍓嶈妭鐐广�恵childDeviceCode}銆�");
- return false;
+ return true;
}
}
}
--
Gitblit v1.9.3