From ff006f77f6267fc0d2c4ee810d897a85165f5b8f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 30 四月 2026 22:08:29 +0800
Subject: [PATCH] Merge branch 'xiaoyang' into dev
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs | 98 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 92 insertions(+), 6 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
index 38a97f2..915f224 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
@@ -17,13 +17,17 @@
#endregion << 鐗� 鏈� 娉� 閲� >>
+using Autofac.Core;
using MapsterMapper;
+using Masuit.Tools;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using Serilog;
using SqlSugar;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
+using System.Text;
using WIDESEA_Core;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.HttpEnum;
@@ -73,6 +77,7 @@
_taskExecuteDetailService = taskExecuteDetailService;
_logger = logger;
}
+
public override WebResponseContent DeleteData(object[] keys)
{
List<int> taskKeys = new List<int>();
@@ -83,8 +88,8 @@
List<Dt_RobotTask> tasks = BaseDal.QueryData(x => taskKeys.Contains(x.RobotTaskId));
BaseDal.DeleteAndMoveIntoHty(tasks, OperateTypeEnum.浜哄伐鍒犻櫎);
return WebResponseContent.Instance.OK($"鎴愬姛鍒犻櫎{tasks.Count}鏉℃暟鎹�");
-
}
+
public bool DeleteRobotTask(int id)
{
Dt_RobotTask task = BaseDal.QueryFirst(x => x.RobotTaskId == id);
@@ -133,7 +138,7 @@
public Dt_RobotTask? QueryRobotCraneTask(string deviceCode)
{
- return BaseDal.QueryFirst(x => x.RobotRoadway == deviceCode && x.RobotTaskState != (int)TaskRobotStatusEnum.RobotExecuting, TaskOrderBy);
+ return BaseDal.QueryFirst(x => x.RobotRoadway == deviceCode, TaskOrderBy);
}
public Dt_RobotTask? QueryRobotCraneExecutingTask(string deviceCode)
@@ -341,7 +346,7 @@
/// 鑾峰彇鏈烘鎵嬩换鍔℃�绘暟閲忋��
/// 缁勭洏浠诲姟鍥哄畾48锛屾崲鐩樺拰鎷嗙洏浠诲姟閫氳繃鎵樼洏鍙锋煡璇MS搴撳瓨鏄庣粏鏁伴噺銆�
/// </summary>
- private int GetRobotTaskTotalNum(int taskType, string? palletCode)
+ public int GetRobotTaskTotalNum(int taskType, string? palletCode)
{
if (taskType == (int)RobotTaskTypeEnum.GroupPallet)
return 48;
@@ -351,8 +356,10 @@
try
{
+ QuartzLogHelper.LogInfo(_logger, $"寮�濮嬭皟鐢╓MS鎺ュ彛鑾峰彇搴撳瓨鏄庣粏鏁伴噺,鎵樼洏鍙�:銆恵palletCode}銆�", "RobotTaskService");
string url = $"{BaseAPI.WMSBaseUrl}Stock/GetStockDetailCount?palletCode={Uri.EscapeDataString(palletCode)}";
var result = _httpClientHelper.Get(url);
+ QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鑾峰彇搴撳瓨鏄庣粏鏁伴噺鎺ュ彛,璇锋眰URL:銆恵url}銆�,鍝嶅簲鏁版嵁:銆恵result.Content}銆�,鑰楁椂:{result.Duration}ms", "RobotTaskService");
if (!result.IsSuccess || string.IsNullOrEmpty(result.Content))
return 1;
@@ -360,8 +367,8 @@
if (response == null || !response.Status)
return 1;
- var detailCount = response.Data?.GetType().GetProperty("DetailCount")?.GetValue(response.Data);
- return detailCount is int count and > 0 ? count : 1;
+ var detailCount = (response.Data as JObject)?["detailCount"]?.Value<int>();
+ return detailCount.HasValue && detailCount.Value > 0 ? detailCount.Value : 1;
}
catch
{
@@ -466,8 +473,10 @@
CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineDBNameNew.Barcode) && x.DeviceChildCode == sourceLineNo);
+ //conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 20);
//ConveyorLineTaskCommandNew command = conveyorLine.ReadCustomer<ConveyorLineTaskCommandNew>(sourceLineNo); // 娴嬭瘯鐢�
- var barcode = conveyorLine.GetValue<ConveyorLineDBNameNew, string>(ConveyorLineDBNameNew.Barcode, sourceLineNo);
+ var bytes = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 20);
+ var barcode = Encoding.Default.GetString(bytes).Trim();
stock.SourcePalletNo = string.IsNullOrEmpty(barcode) ? string.Empty : barcode;
}
}
@@ -546,5 +555,82 @@
.Where(x => !string.IsNullOrWhiteSpace(x.Key) && !string.IsNullOrWhiteSpace(x.Value))
.ToDictionary(x => x.Key.Trim(), x => x.Value!.Trim());
}
+
+ public WebResponseContent CreateRobotTaskManually(ManualRobotTaskDto request)
+ {
+ try
+ {
+ Dt_RobotTask robotTask = new Dt_RobotTask();
+ robotTask.RobotTaskNum = Random.Shared.StrictNext();
+ robotTask.RobotRoadway = request.RobotRoadway;
+ if (request.RobotRoadway == RobotTaskTypeEnum.GroupPallet.ToString())
+ {
+ robotTask.RobotTaskType = (int)RobotTaskTypeEnum.GroupPallet;
+ robotTask.RobotTaskState = (int)TaskRobotStatusEnum.RobotNew;
+ robotTask.RobotTaskTotalNum = request.RobotTaskTotalNum;
+ robotTask.RobotDispatchertime = DateTime.Now;
+ robotTask.RobotRemark = "浜哄伐鎵嬪姩鍒涘缓";
+ robotTask.RobotTargetAddressPalletCode = request.RobotTargetAddressPalletCode;
+ robotTask.RobotTargetAddressLineCode = "11068";
+ }
+ else if (request.RobotRoadway == RobotTaskTypeEnum.ChangePallet.ToString())
+ {
+ switch (request.Forward)
+ {
+ case 1:
+ robotTask.RobotSourceAddress = "1";
+ robotTask.RobotSourceAddressLineCode = "11010";
+ robotTask.RobotTargetAddress = "3";
+ robotTask.RobotTargetAddressLineCode = "2103";
+ break;
+ case 2:
+ robotTask.RobotSourceAddress = "2";
+ robotTask.RobotSourceAddressLineCode = "11001";
+ robotTask.RobotTargetAddress = "4";
+ robotTask.RobotTargetAddressLineCode = "2101";
+ break;
+ case 3:
+ robotTask.RobotSourceAddress = "3";
+ robotTask.RobotSourceAddressLineCode = "2103";
+ robotTask.RobotTargetAddress = "1";
+ robotTask.RobotTargetAddressLineCode = "11010";
+ break;
+ case 4:
+ robotTask.RobotSourceAddress = "4";
+ robotTask.RobotSourceAddressLineCode = "2101";
+ robotTask.RobotTargetAddress = "2";
+ robotTask.RobotTargetAddressLineCode = "11001";
+ break;
+ default:
+ return WebResponseContent.Instance.Error($"娣诲姞鏈哄櫒浜轰换鍔″け璐�,鏂瑰悜涓嶅");
+ }
+ robotTask.RobotTaskType = (int)RobotTaskTypeEnum.ChangePallet;
+ robotTask.RobotTaskState = (int)TaskRobotStatusEnum.RobotNew;
+ robotTask.RobotTaskTotalNum = request.RobotTaskTotalNum;
+ robotTask.RobotDispatchertime = DateTime.Now;
+ robotTask.RobotRemark = "浜哄伐鎵嬪姩鍒涘缓";
+ robotTask.RobotSourceAddressPalletCode = request.RobotSourceAddressPalletCode;
+ robotTask.RobotTargetAddressPalletCode = request.RobotTargetAddressPalletCode;
+ }
+ else if (request.RobotRoadway == RobotTaskTypeEnum.SplitPallet.ToString())
+ {
+ robotTask.RobotTaskType = (int)RobotTaskTypeEnum.SplitPallet;
+ robotTask.RobotTaskState = (int)TaskRobotStatusEnum.RobotNew;
+ robotTask.RobotTaskTotalNum = request.RobotTaskTotalNum;
+ robotTask.RobotDispatchertime = DateTime.Now;
+ robotTask.RobotRemark = "浜哄伐鎵嬪姩鍒涘缓";
+ robotTask.RobotSourceAddressPalletCode = request.RobotSourceAddressPalletCode;
+ }
+ else
+ {
+ return WebResponseContent.Instance.Error($"娣诲姞鏈哄櫒浜轰换鍔″け璐ワ紝鏈哄櫒浜哄悕绉伴敊璇瘂request.RobotRoadway}");
+ }
+ return base.AddData(robotTask);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error($"娣诲姞鏈哄櫒浜轰换鍔″け璐�: {ex.Message}");
+ }
+ }
}
}
\ No newline at end of file
--
Gitblit v1.9.3