From 02a4fdd78cef9c7d2a26bfb9aa187179cf0baac3 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 25 二月 2026 17:44:26 +0800
Subject: [PATCH] 1
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs | 279 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 171 insertions(+), 108 deletions(-)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs
index 854c468..0e755ba 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs
@@ -28,12 +28,16 @@
using SqlSugar;
using System.ComponentModel.Design;
using System.Reflection;
+using System.Reflection.Metadata;
+using System.Threading;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.HttpContextUser;
+using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_DTO.MOM;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IProcessRepository;
@@ -47,6 +51,7 @@
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_SignalR;
using WIDESEAWCS_Tasks.ConveyorLineJob;
+using static Quartz.Logging.OperationName;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
using Platform = WIDESEAWCS_Model.Models.Platform;
@@ -69,7 +74,7 @@
private readonly IDeviceInfoRepository _deviceInfoRepository;
private static List<string>? userTokenIds;
private static List<int>? userIds;
- private static List<string> childCodeList = new List<string>();
+ private static DateTime? lastUpdateTime;
public CommonConveyorLine_CWJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService, IDt_StationManagerRepository stationManagerRepository, ICacheService cacheService, INoticeService noticeService, IDt_needBarcodeRepository needBarcodeRepository, IDeviceInfoRepository deviceInfoRepository)
{
@@ -94,96 +99,109 @@
CommonConveyorLine_CW conveyorLine = (CommonConveyorLine_CW)context.JobDetail.JobDataMap.Get("JobParams");
if (conveyorLine != null)
{
- #region 绔欏彴鏂瑰紡
-
- //List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode);
-
- //foreach (var station in stationManagers)
- //{
- // ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationChildCode);
-
- // DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString());
- // if (deviceProtocolDetails != null)
- // {
- // MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
- // if (method != null)
- // {
- // method.Invoke(this, new object[] { conveyorLine, command, station });
- // }
- // }
- //}
-
- #endregion 绔欏彴鏂瑰紡
-
#region 璺敱鏂瑰紡
List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
- childDeviceCodes.Add("4000");
+ var chunks = childDeviceCodes.Chunk(10);
+
+ //if (conveyorLine.DeviceCode == "1024")
+ //{
+ // childDeviceCodes.Add("4000");
+ //}
+
+ //var options = new ParallelOptions
+ //{
+ // MaxDegreeOfParallelism = 10
+ // //MaxDegreeOfParallelism = Environment.ProcessorCount
+ //};
+
+ //{
+ // SiemensS7 siemensS7 = new SiemensS7(conveyorLine.Communicator.IpAddress, conveyorLine.Communicator.Port, conveyorLine.DeviceName);
+ // siemensS7.Connect();
+ // tasks.Add(Task.Run(() =>
+ // {
+
+ // }));
+ //}
+ //Parallel.For(0, childDeviceCodes.Count, options, i =>
+ //Parallel.ForEach(childDeviceCodes, options, childDeviceCode =>
+ var tasks = new List<Task>();
- foreach (string childDeviceCode in childDeviceCodes)
+ foreach (var item in chunks)
{
-
- ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode);
-
- if (command == null) continue;
- //if (command.InteractiveSignal == 0 && command.HasPallet != 1) continue;
- if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = "";
-
- DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString());
- if (deviceProtocolDetails != null)
+ tasks.Add(Task.Run(() =>
{
- MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
- if (method != null)
+ foreach (string childDeviceCode in item)
{
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
- }
- }
+ ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode);
- if (childDeviceCode == "1670" || childDeviceCode == "1666" || childDeviceCode == "1548" || childDeviceCode == "1448")
- {
- Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
- if (platform != null)
- {
- if (command.HasPallet != 1)
+ if (command != null)
{
- MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
- if (method != null)
+ if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = "";
+
+ DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString());
+ if (deviceProtocolDetails != null)
{
- int count = 1;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
+ if (method != null)
+ {
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
+ }
}
+
+ if (childDeviceCode == "1670" || childDeviceCode == "1666" || childDeviceCode == "1548" || childDeviceCode == "1448")
+ {
+ if (lastUpdateTime > DateTime.Now.AddMinutes(1))
+ {
+ lastUpdateTime = DateTime.Now;
+ Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
+ if (platform != null)
+ {
+ if (command.HasPallet != 1)
+ {
+ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
+ if (method != null)
+ {
+ int count = 1;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ }
+ }
+ }
+ }
+ }
+
+ #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
+
+ var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
+ if (tokenInfos != null || tokenInfos.Any())
+ {
+
+ var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
+ var userIds = tokenInfos?.Select(x => x.UserId).ToList();
+
+ object obj = new
+ {
+ childDeviceCode,
+ commandAfter = command,
+ };
+ _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, data = obj });
+
+ }
+ #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
}
+
+
}
- }
-
-
- #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
-
- var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
- if (tokenInfos == null || !tokenInfos.Any())
- {
- continue;
- }
- var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
- var userIds = tokenInfos?.Select(x => x.UserId).ToList();
-
- object obj = new
- {
- childDeviceCode,
- commandAfter = command,
- };
- _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, data = obj });
-
- #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
-
+ }));
}
+ //Task.WaitAll(tasks.ToArray());
#endregion 璺敱鏂瑰紡
}
}
catch (Exception ex)
{
- Console.Out.WriteLine(nameof(CommonConveyorLine_CWJob) + ":" + DateTime.Now + ":" + ex.ToString(),ex.StackTrace);
+ Console.Out.WriteLine(nameof(CommonConveyorLine_CWJob) + ":" + DateTime.Now + ":" + ex.ToString(), ex.StackTrace);
}
finally
{
@@ -206,7 +224,6 @@
var log = $"鏃堕棿锛氥�恵DateTime.Now}銆戙�恵conveyorLine.DeviceName}銆戞墭鐩樺彿锛氥�恵command.ConveyorLineBarcode}銆戜换鍔″彿锛氥�恵command.ConveyorLineTaskNum}銆戣澶囩紪鐮侊細銆恵childDeviceCode}銆�";
ConsoleHelper.WriteSuccessLine(log);
- //_noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
WriteInfo(conveyorLine.DeviceName, log);
if (childDeviceCode == "4000")
@@ -222,15 +239,15 @@
}
else
{
- if (childDeviceCode == "1039")
- {
- var GWTask = _taskRepository.QueryData(x => x.Roadway.Contains("GWSC2") && x.SourceAddress == "1039" && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskInStatusEnum.Line_InFinish)).ToList();
- if (GWTask.Count >= 2 && childDeviceCode == "1039" && task.Roadway.Contains("GWSC2"))
- {
- ConsoleHelper.WriteErrorLine($"鏃堕棿锛氥�恵DateTime.Now}銆戞墭鐩樺彿锛氥�恵command.ConveyorLineBarcode}銆戦珮娓╀簩宸插瓨鍦ㄣ�恵GWTask.Count}銆戜釜浠诲姟澶т簬2涓换鍔′笉鍙笅鍙�");
- return;
- }
- }
+ //if (childDeviceCode == "1039")
+ //{
+ // var GWTask = _taskRepository.QueryData(x => x.Roadway.Contains("GWSC2") && x.SourceAddress == "1039" && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskInStatusEnum.Line_InFinish)).ToList();
+ // if (GWTask.Count >= 2 && childDeviceCode == "1039" && task.Roadway.Contains("GWSC2"))
+ // {
+ // ConsoleHelper.WriteErrorLine($"鏃堕棿锛氥�恵DateTime.Now}銆戞墭鐩樺彿锛氥�恵command.ConveyorLineBarcode}銆戦珮娓╀簩宸插瓨鍦ㄣ�恵GWTask.Count}銆戜釜浠诲姟澶т簬2涓换鍔′笉鍙笅鍙�");
+ // return;
+ // }
+ //}
ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
@@ -279,15 +296,6 @@
}
}
}
- //else
- //{
- // //褰撳墠鍦板潃璇锋眰 瀵绘壘褰撳墠鍦板潃鐨勬墭鐩樺彿 浠诲姟鍙风殑浠诲姟锛屽瀛樺湪浠诲姟鍒欓噸鏂板啀娆″啓鍏ユ柊鐩爣鍦板潃
- // Dt_Task currentTask = _taskService.QueryExecutingCurrentConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode, command.ConveyorLineBarcode);
- // if (currentTask != null)
- // {
- // conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(currentTask.TargetAddress), childDeviceCode);
- // }
- //}
}
/// <summary>
@@ -320,20 +328,36 @@
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
/// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ /// <summary>
+ /// 瑙﹀彂杈撻�佺嚎鍑哄簱璇锋眰澶勭悊
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥锛圕ommonConveyorLine_CW绫诲瀷锛夛紝鍖呭惈杈撻�佺嚎璁惧鍩虹淇℃伅鍜屾搷浣滄柟娉�</param>
+ /// <param name="command">杈撻�佺嚎浠诲姟鎸囦护瀵硅薄锛堝悗缁増鏈級锛屾殏鏈洿鎺ヤ娇鐢紝棰勭暀鎸囦护涓婁笅鏂�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鐮侊紝鐢ㄤ簬瀹氫綅杈撻�佺嚎鐨勫叿浣撳瓙璁惧</param>
public void RequestOutbound(CommonConveyorLine_CW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
{
+ // 鏍规嵁涓昏緭閫佺嚎璁惧缂栫爜鍜屽瓙璁惧缂栫爜锛屾煡璇㈠搴旂殑杈撻�佺嚎浠诲姟
var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+
+ // 鑻ユ煡璇㈠埌鏈夋晥浠诲姟锛屽垯鎵ц鍚庣画鎸囦护鍙戦�佸拰鐘舵�佹洿鏂伴�昏緫
if (task != null)
{
+ // 灏嗘暟鎹簱鏌ヨ鍒扮殑浠诲姟瀵硅薄鏄犲皠涓烘寚浠ゅ璞★紙閫傞厤鎸囦护鍙戦�佺殑鏁版嵁缁撴瀯锛�
ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
- //conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // 鍙戦�佷换鍔℃寚浠ゅ埌鎸囧畾杈撻�佺嚎瀛愯澶囷紝骞惰幏鍙栧彂閫佺粨鏋滐紙鍘熸敞閲婃帀鐨刢onveyorLine.SendCommand宸叉浛鎹负灏佽鍚庣殑鏂规硶锛�
bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode);
+
+ // 鑻ユ寚浠ゅ彂閫佹垚鍔燂紝鎵ц鐘舵�佹洿鏂版搷浣�
if (sendFlag)
{
+ // 鏇存柊杈撻�佺嚎瀛愯澶囩殑鍝嶅簲鐘舵�佷负1锛�1浠h〃鎸囦护宸插搷搴�/澶勭悊鎴愬姛锛屽搴旀暟鎹簱瀛楁ConveyorLineDBName_After.ResponState锛�
conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode);
+ // 灏嗕换鍔$姸鎬佹洿鏂板埌涓嬩竴涓樁娈碉紙閫氱敤浠诲姟鐘舵�佹祦杞級
_taskService.UpdateTaskStatusToNext(task);
+
+ // 鐗规畩澶勭悊锛氳嫢浠诲姟绫诲瀷涓哄嚭鎵樼洏锛圤utTray锛夛紝棰濆鍐嶆墽琛屼竴娆′换鍔$姸鎬佹洿鏂帮紙閫傞厤鍑烘墭鐩樹换鍔$殑鐗规畩鐘舵�佹祦杞�昏緫锛�
if (task.TaskType == (int)TaskOutboundTypeEnum.OutTray)
{
_taskService.UpdateTaskStatusToNext(task);
@@ -348,63 +372,100 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ /// <summary>
+ /// 澶勭悊杈撻�佺嚎涓嬩竴鍦板潃璇锋眰锛堟牳蹇冮�昏緫锛氭煡璇㈡墽琛屼腑浠诲姟鈫掕幏鍙朚OM閰嶇疆鈫掕皟鐢∕OM鎺ュ彛鏍¢獙鈫掓牴鎹牎楠岀粨鏋�/浠诲姟鐘舵�佸彂閫佹寚浠ゅ苟鏇存柊浠诲姟锛�
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥锛圕ommonConveyorLine_CW绫诲瀷锛夛紝鍖呭惈杈撻�佺嚎璁惧鍩虹淇℃伅鍜屾搷浣滄柟娉�</param>
+ /// <param name="command">杈撻�佺嚎浠诲姟鎸囦护瀵硅薄锛堝悗缁増鏈級锛屾惡甯︿换鍔$紪鍙枫�佹潯鐮併�佸瓙璁惧缂栫爜绛夊叧閿寚浠ゅ弬鏁�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鐮侊紝鐢ㄤ簬瀹氫綅杈撻�佺嚎鐨勫叿浣撳瓙璁惧</param>
public void RequestOutNextAddress(CommonConveyorLine_CW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
{
+ // 1. 鏌ヨ鎸囧畾鏉′欢涓嬫鍦ㄦ墽琛岀殑杈撻�佺嚎浠诲姟锛堜换鍔$紪鍙�+瀛愯澶囩紪鐮�+杈撻�佺嚎鏉$爜锛�
Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode, command.ConveyorLineBarcode);
+
+ // 浠呭綋鏌ヨ鍒版湁鏁堟墽琛屼腑浠诲姟鏃讹紝鎵ц鍚庣画閫昏緫
if (task != null)
{
+ // 2. 鑾峰彇绯荤粺閰嶇疆涓�孖P鍦板潃銆嶅垎绫讳笅鐨勯厤缃」锛堢敤浜庢嫾鎺OM鎺ュ彛鍦板潃锛�
var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ // 鎻愬彇MOM鍩虹IP閰嶇疆鍊�
var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.MOMIP_BASE)?.ConfigValue;
+ // 鎻愬彇鎵樼洏鏍煎彛鐘舵�佹帴鍙g殑IP璺緞閰嶇疆鍊�
var ipAddress = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.TrayCellsStatus)?.ConfigValue;
+
+ // 鏍¢獙MOM IP閰嶇疆瀹屾暣鎬э紝缂哄け鍒欐姏鍑哄紓甯哥粓姝㈡祦绋�
if (wmsBase == null || ipAddress == null)
{
throw new InvalidOperationException("MOM IP 鏈厤缃�");
}
+
+ // 3. 鏌ヨ褰撳墠杈撻�佺嚎璁惧+瀛愯澶囧搴旂殑宸ヤ綅閰嶇疆淇℃伅锛堝叧鑱擯LC缂栫爜銆佸瓙缂栫爜涓嶮OM璁惧缂栫爜锛�
Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationPLC == conveyorLine.DeviceCode && x.stationChildCode == childDeviceCode);
+
+ // 4. 鏋勫缓鎵樼洏鏍煎彛鐘舵�佹牎楠岀殑璇锋眰DTO锛堥�傞厤MOM鎺ュ彛鍏ュ弬鏍煎紡锛�
TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
{
- Software = "WMS",
- TrayBarcode = command.ConveyorLineBarcode,
- EquipmentCode = stationManager.stationEquipMOM,
- SessionId = Guid.NewGuid().ToString(),
- EmployeeNo = "MITest",
- SceneType = "1",
- RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
+ Software = "WMS", // 璋冪敤鏂圭郴缁熸爣璇嗭紙鍥哄畾涓篧MS锛�
+ TrayBarcode = command.ConveyorLineBarcode, // 杈撻�佺嚎鏉$爜锛堟墭鐩樻潯鐮侊級
+ EquipmentCode = stationManager.stationEquipMOM, // MOM绯荤粺瀵瑰簲鐨勮澶囩紪鐮�
+ SessionId = Guid.NewGuid().ToString(), // 鍞竴浼氳瘽ID锛堥槻姝㈤噸澶嶈姹傦級
+ EmployeeNo = "MITest", // 鎿嶄綔鍛樺伐缂栧彿锛堟祴璇曞浐瀹氬�硷級
+ SceneType = "1", // 鍦烘櫙绫诲瀷锛�1浠h〃鍏ョ珯鏍¢獙鍦烘櫙锛�
+ RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ") // UTC鏍煎紡璇锋眰鏃堕棿
};
+ // 鎷兼帴瀹屾暣鐨凪OM鎺ュ彛鍦板潃锛堝熀纭�IP + 鎺ュ彛璺緞锛�
var MOMIpAddress = wmsBase + ipAddress;
- var result = HttpHelper.PostAsync(MOMIpAddress, trayCells.Serialize()).Result;
WriteInfo("鍏ョ珯鏍¢獙", $"銆恵childDeviceCode}銆戝叆绔欐牎楠岃姹傚弬鏁般�恵trayCells.Serialize()}銆�");
- WriteInfo("鍏ョ珯鏍¢獙", "");
+ var result = HttpHelper.PostAsync(MOMIpAddress, trayCells.Serialize()).Result;
+
WriteInfo("鍏ョ珯鏍¢獙", $"銆恵childDeviceCode}銆戝叆绔欐牎楠岃繑鍥炲弬鏁般�恵result}銆�");
+
+ // 6. 瑙f瀽MOM鎺ュ彛杩斿洖缁撴灉涓哄疄浣撳璞�
ResultTrayCellsStatus result1 = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(result);
+
+ // 7. 鍒嗘敮1锛氭帴鍙f牎楠屾垚鍔� 鎴� 浠诲姟澶囨敞闈濶G锛堟甯告祦绋嬶級
if (result1.Success || task.Remark != "NG")
{
+ // 鏇存柊浠诲姟鐨勪綅缃俊鎭紙浠诲姟缂栧彿+褰撳墠鍦板潃锛夛紝杩斿洖鏇存柊鍚庣殑浠诲姟瀵硅薄
Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
+
if (newTask != null)
{
+ // 灏嗘洿鏂板悗鐨勪换鍔″璞℃槧灏勪负杈撻�佺嚎鎸囦护瀵硅薄锛堥�傞厤鎸囦护鍙戦�佺粨鏋勶級
ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask);
- //conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // 鍙戦�佹寚浠ゅ埌杈撻�佺嚎瀛愯澶囷紝鑾峰彇鍙戦�佺粨鏋滐紙灏佽鍚庣殑SendCommand鏂规硶锛�
bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode);
+
+ // 鎸囦护鍙戦�佹垚鍔熷垯鏇存柊璁惧鍝嶅簲鐘舵�佸拰浠诲姟鏁版嵁
if (sendFlag)
{
+ // 鏇存柊杈撻�佺嚎瀛愯澶囧搷搴旂姸鎬佷负1锛堜唬琛ㄦ寚浠ゅ鐞嗘垚鍔燂級
conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode);
+ // 鎸佷箙鍖栨洿鏂板悗鐨勪换鍔℃暟鎹埌鏁版嵁搴�
_taskService.UpdateData(newTask);
}
}
}
+ // 8. 鍒嗘敮2锛氭帴鍙f牎楠屽け璐� 涓� 浠诲姟澶囨敞涓篘G锛堝紓甯告祦绋嬶紝鍙戦�丯G鍦板潃鎸囦护锛�
else
{
+ // 灏嗗師浠诲姟瀵硅薄鏄犲皠涓鸿緭閫佺嚎鎸囦护瀵硅薄
ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
+ // 璁剧疆鎸囦护鐨勭洰鏍囧湴鍧�涓哄伐浣嶉厤缃腑鐨凬G瀛愮紪鐮侊紙瀵煎悜寮傚父澶勭悊宸ヤ綅锛�
taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(stationManager.stationNGChildCode);
- //conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // 鍙戦�丯G鍦板潃鎸囦护鍒拌緭閫佺嚎瀛愯澶囷紝鑾峰彇鍙戦�佺粨鏋�
bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode);
+
+ // 鎸囦护鍙戦�佹垚鍔熷垯鏇存柊璁惧鍝嶅簲鐘舵�佸拰浠诲姟鐘舵��
if (sendFlag)
{
+ // 鏇存柊杈撻�佺嚎瀛愯澶囧搷搴旂姸鎬佷负1
conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode);
+ // 灏嗕换鍔$姸鎬佹祦杞埌涓嬩竴涓樁娈碉紙閫傞厤NG浠诲姟鐨勭姸鎬侀�昏緫锛�
_taskService.UpdateTaskStatusToNext(task);
}
}
@@ -460,7 +521,11 @@
content = _taskService.UpdateTaskStatusToNext(task);
}
var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationArea == "Call" && x.stationType == 12);
- CommonConveyorLine_BZ? commonConveyorBZ=Storage.Devices.FirstOrDefault(x=>x.DeviceCode==station.stationPLC) as CommonConveyorLine_BZ;
+ if (station == null)
+ {
+ return;
+ }
+ CommonConveyorLine_BZ? commonConveyorBZ = Storage.Devices.FirstOrDefault(x => x.DeviceCode == station.stationPLC) as CommonConveyorLine_BZ;
if (commonConveyorBZ != null)
{
ConveyorLineTaskCommand_After readSignal = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationLocation);
@@ -574,14 +639,11 @@
}
var wmsIpAddress = wmsBase + requestTrayOutTask;
-
+
List<string> strings = platform.Location.Split(',').ToList();
- WriteInfo("璋冨害鎵ц鏃堕棿璁板綍", "銆愯皟鍙朩MS鍑哄簱鎺ュ彛寮�濮嬫椂闂达細銆�" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
-
var result = await HttpHelper.PostAsync(wmsIpAddress, new { Position = childDeviceCode, Tag = (int)taskType, AreaCdoe = platform.Stacker, AreaCdoes = strings, platform.ProductionLine }.Serialize());
-
- WriteInfo("璋冨害鎵ц鏃堕棿璁板綍", "銆愯皟鍙朩MS鍑哄簱鎺ュ彛缁撴潫鏃堕棿锛氥��" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
+ WriteInfo("OCV璇锋眰杩斿洖鍙傛暟", $"鏃堕棿锛氥�恵DateTime.Now}銆戣姹傜偣浣嶃�恵childDeviceCode}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(result)}銆�");
WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
@@ -603,6 +665,7 @@
public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
{
var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+
if (content.Status)
{
Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
--
Gitblit v1.9.3