From 04b4e2ca4bbbc147036a0bf15ce0b8b1c45cc74b Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期六, 11 十月 2025 16:26:22 +0800
Subject: [PATCH] 新增设备状态上传与包装站台换型功能在CommonConveyorLine_BZJob.cs和CommonConveyorLine_GWJob.cs中新增对信号状态判断逻辑。 在 ConfigConst.cs`中新增常量 EqptRun,用于设备状态上传。新增 EqptRunDTO类,支持设备运行状态的数据传输。在 IAgingInOrOutInputService.cs中定义 Change方法接口,并在AgingInOrOutInputService.cs中实现设备型号修改逻辑。优化 Dt_TaskService.cs中的异常电芯处理、组盘信息获取、库存查询逻辑,并新增包装站台换型功能。 - 增强日志记录,便于问题排查。
---
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 227 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 130 insertions(+), 97 deletions(-)
diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index eef4783..d300996 100644
--- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -6,6 +6,8 @@
using Microsoft.VisualBasic;
using MoYu.Logging;
using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using SqlSugar;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
@@ -17,6 +19,7 @@
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
@@ -101,10 +104,10 @@
{
// 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶇被浼� -鏁板瓧 鐨勬ā寮忥紝骞舵浛鎹负绌哄瓧绗︿覆
task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
- if (Convert.ToInt32(task.NextAddress) > 1999)
- {
- task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
- }
+ //if (Convert.ToInt32(task.NextAddress) > 2999)
+ //{
+ // task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
+ //}
var comm = _mapper.Map<ConveyorLineTaskCommand>(task);
comm.InteractiveSignal = command.InteractiveSignal;
return comm;
@@ -150,6 +153,21 @@
{
if (command.Barcode != "NoRead")
{
+ if (_taskRepository.QueryFirst(x => x.PalletCode == command.Barcode) != null)
+ {
+ var taskExecuting = _taskRepository.QueryFirst(x => x.PalletCode == command.Barcode && (x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish));
+
+ if (taskExecuting != null)
+ {
+ taskExecuting.ExceptionMessage = "鏈帴鏀跺埌绾夸綋瀹屾垚淇″彿绯荤粺鍐呴儴鑷姩瀹屾垚";
+ _taskService.Delete(taskExecuting);
+ }
+
+ ConsoleHelper.WriteErrorLine($"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵command.Barcode}銆�");
+
+ WriteInfo(conveyorLine.DeviceName, $"褰撳墠鎵樼洏瀛樺湪浠诲姟{command.Barcode}");
+
+ }
string isTrue = string.Empty;
ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
@@ -186,10 +204,6 @@
taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); ;
}
- if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null)
- {
- WriteInfo(conveyorLine.DeviceName, "褰撳墠鎵樼洏瀛樺湪浠诲姟");
- }
CreateEmptyTryTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue, taskDTO);
}
@@ -200,7 +214,8 @@
var content = CreateAndSendTask(taskDTO);
if (content.Status)
{
- var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ //var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode);
if (task != null)
{
var next = task.NextAddress;
@@ -285,59 +300,101 @@
/// </summary>
private async Task RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_StationManager stationManager)
{
- string isTrue = string.Empty;
-
- ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
-
ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
- if (result.SerialNos.Count == 0)
+ if (childDeviceCode == "1435")
{
- var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
- if (Traycontent.Status)
- {
- ConsoleHelper.WriteSuccessLine("浜屽皝绌烘璇锋眰鍥炴祦");
- ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- }
- }
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- List<string> strings = stationManager.Roadway.Split(",").ToList();
- foreach (string item in strings)
- {
- isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
- if (isTrue != null)
+ var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
+
+ if (serialNosError.Count > 0 || !result.Success || result.SerialNos.Count == 0)
{
- break;
+ WMSTaskDTO taskDTO = new WMSTaskDTO
+ {
+ TaskNum = _taskRepository.GetTaskNo().Result,
+ Grade = 1,
+ PalletCode = command.Barcode,
+ RoadWay = "CHSC4",
+ SourceAddress = childDeviceCode,
+ TargetAddress = "CHSC4",
+ TaskState = (int)TaskInStatusEnum.InNew,
+ Id = 2,
+ TaskType = (int)TaskInboundTypeEnum.InNG,
+ ProductionLine = result.ProductionLine,
+ };
+ var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+ if (Taskcontent.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+ ConsoleHelper.WriteSuccessLine($"銆恵stationManager.stationRemark}銆戙�恵stationManager.stationChildCode}銆憑result.MOMMessage}");
+ return;
}
- }
- if (isTrue != null && isTrue != string.Empty)
- {
- WMSTaskDTO taskDTO = new WMSTaskDTO
+ else
{
- TaskNum = _taskRepository.GetTaskNo().Result,
- Grade = 1,
- PalletCode = command.Barcode,
- RoadWay = childDeviceCode,
- SourceAddress = childDeviceCode,
- TargetAddress = isTrue,
- TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
- Id = 2,
- TaskType = (int)TaskOutboundTypeEnum.OutTray,
- ProductionLine = result.ProductionLine,
- };
- var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- if (Taskcontent.Status)
- {
- ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Taskcontent.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
}
}
else
{
- var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
- if (Taskcontent.Status)
+ string isTrue = string.Empty;
+
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+
+ if (result.SerialNos.Count == 0)
{
- ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Traycontent.Status)
+ {
+ ConsoleHelper.WriteSuccessLine("浜屽皝绌烘璇锋眰鍥炴祦");
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+ }
+
+ List<string> strings = stationManager.Roadway.Split(",").ToList();
+ foreach (string item in strings)
+ {
+ isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
+ if (isTrue != null)
+ {
+ break;
+ }
+ }
+ if (isTrue != null && isTrue != string.Empty)
+ {
+ WMSTaskDTO taskDTO = new WMSTaskDTO
+ {
+ TaskNum = _taskRepository.GetTaskNo().Result,
+ Grade = 1,
+ PalletCode = command.Barcode,
+ RoadWay = childDeviceCode,
+ SourceAddress = childDeviceCode,
+ TargetAddress = isTrue,
+ TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
+ Id = 2,
+ TaskType = (int)TaskOutboundTypeEnum.OutTray,
+ ProductionLine = result.ProductionLine,
+ };
+ var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+ if (Taskcontent.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+
+ }
+ else
+ {
+ var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Taskcontent.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
}
}
}
@@ -384,6 +441,22 @@
LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, conveyorLineTaskCommand.TargetAddress.ToString());
return;
}
+
+ var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
+ var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryLocationFreeJZ).FirstOrDefault()?.ConfigValue;
+ if (wmsbase == null || address == null)
+ {
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddrss = wmsbase + address;
+ var x = await HttpHelper.PostAsync(wmsIpAddrss, new { RoadwayNo = "JZSC" }.ToJsonString());
+ var LocationFree = JsonConvert.DeserializeObject<WebResponseContent>(x);
+ if (!LocationFree.Status)
+ {
+ ConsoleHelper.WriteErrorLine(LocationFree.Message);
+ return;
+ }
if (resultTrayCellsStatus.SerialNos.Count == 0)
{
var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
@@ -399,14 +472,12 @@
}
else
{
- var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
- var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
- var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
- if (wmsbase == null || address == null)
+ var QueryStockInfoForRealTrayJZ = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
+ if (wmsbase == null || QueryStockInfoForRealTrayJZ == null)
{
throw new InvalidOperationException("WMS IP 鏈厤缃�");
}
- var wmsIpAddrss = wmsbase + address;
+ wmsIpAddrss = wmsbase + QueryStockInfoForRealTrayJZ;
var result = await HttpHelper.PostAsync(wmsIpAddrss, new { ProductLine = resultTrayCellsStatus.ProductionLine, PalletCode = command.Barcode }.ToJsonString());
var StockInfocontent = JsonConvert.DeserializeObject<WebResponseContent>(result);
if (StockInfocontent.Status)
@@ -419,44 +490,6 @@
{
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
}
- #region
- //if (task != null && task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && task.CurrentAddress == "1537")
- //{
- // ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(stationManager.stationLocation);
-
- // if (command1.InteractiveSignal != 2)
- // {
- // ConsoleHelper.WriteSuccessLine("鍖栨垚瀹炴墭璇锋眰鍏ラ潤缃�");
- // if (StaticVariable.isStackerRun == true)
- // {
- // ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- // }
- // return;
- // }
- // else
- // {
- // ConsoleHelper.WriteWarningLine("鍑哄簱浠诲姟鏈畬鎴�");
- // return;
- // }
- //}
- //else if (task != null && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
- //{
- // ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�");
- // return;
- //}
- //else
- //{
- // var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
- // if (Task.Status)
- // {
- // if (StaticVariable.isStackerRun == true)
- // {
- // ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- // }
- // }
- // return;
- //}
- #endregion
}
else
{
@@ -568,11 +601,9 @@
else if (task.Roadway.Contains("JZ"))
{
// 鏌ヨ鏄惁瀛樺湪闈欑疆鍑哄簱浠诲姟
- var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
- (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
- x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew));
+ var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway && x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew));
- if (!outJZTask.Any())
+ if (!outJZTask.Any() || outJZTask.Count() == 0)
{
// 鏄犲皠浠诲姟鍛戒护
var taskCommand = MapTaskCommand(task, command);
@@ -585,10 +616,12 @@
// 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(task);
+
+ WriteInfo(conveyorLine.DeviceName, $"闈欑疆瀛樺湪鍑哄簱浠诲姟{outJZTask.Count()}");
}
else
{
- ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
+ ConsoleHelper.WriteErrorLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
}
}
else
--
Gitblit v1.9.3