From e4921e003cc293fea714bdaf74dc6a6b6b750295 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期六, 25 四月 2026 16:20:51 +0800
Subject: [PATCH] Merge branch 'xiaoyang' into dev
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs | 15 +
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs | 9
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs | 2
Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/Constants/TaskAddressConstants.cs | 7
Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs | 18
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs | 2
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs | 12
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json | 2
项目资料/设备协议/高常温堆垛机与输送线/WCS输送对接地址表_0420.xlsx | 0
Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs | 5
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs | 23 +
项目资料/设备协议/分容柜接口协议/化成分容柜接口协议1.1.xls | 0
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs | 10
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs | 18
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs | 200 ++++++++++---------
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs | 7
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs | 14
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs | 94 ++++++---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 13 +
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_GradingMachine.cs | 60 +++--
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs | 40 +++
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineTargetAddressSelector.cs | 10
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs | 37 +++
23 files changed, 383 insertions(+), 215 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
index 6696d46..3b9faf3 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -151,9 +151,9 @@
/// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟
/// </summary>
/// <param name="deviceNo">璁惧缂栧彿</param>
- /// <param name="outStationCodes">褰撳墠鍦板潃</param>
+ /// <param name="outStationCodes">鍑哄簱绔欏彴鍦板潃</param>
/// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns>
- List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes);
+ List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes,bool isTrue = true);
/// <summary>
/// 鏇存柊浠诲姟寮傚父淇℃伅鏄剧ず
@@ -191,6 +191,15 @@
Dt_Task? UpdatePosition(int taskNum, string currentAddress);
/// <summary>
+ /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�銆佷笅涓�鍦板潃鏇存柊浠诲姟浣嶇疆淇℃伅
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <param name="currentAddress">褰撳墠鍦板潃</param>
+ /// <param name="nextAddress">涓嬩竴鍦板潃</param>
+ /// <returns></returns>
+ Dt_Task? UpdatePosition(int taskNum, string currentAddress, string nextAddress);
+
+ /// <summary>
/// 浠诲姟瀹屾垚
/// </summary>
/// <param name="taskNum">浠诲姟缂栧彿</param>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
index b93568a..90f5f4a 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
@@ -99,7 +99,7 @@
if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty)
{
- _robotTaskService.CreateLocalRobotTask(task);
+ return _robotTaskService.CreateLocalRobotTask(task);
//if (!content.Status)
//{
// return content;
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
index b23d9ec..c7d972f 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
@@ -192,10 +192,11 @@
StockDTO stock = BuildRobotTaskStock(task, configKey);
// 鑾峰彇鎶撳彇鍜屾斁缃湴鍧�鐨勭嚎浣撻厤缃紙濡傛灉鏈夛級
- var section = App.Configuration.GetSection("RobotTaskAddressRules").GetSection(stock?.TargetLineNo ?? string.Empty).GetChildren().Select(c => c.Value).ToArray();
+ var section = App.Configuration.GetSection("RobotAddressRules").GetSection(stock?.TargetLineNo ?? string.Empty).GetChildren().Select(c => c.Value).ToArray();
if (section.Length < 2)
return WebResponseContent.Instance.Error($"鏈壘鍒扮嚎浣揫{stock?.TargetLineNo}]鐨勫湴鍧�閰嶇疆");
+ int taskType = MapConfigKeyToRobotTaskType(configKey);
// 鍒涘缓鏈湴鏈哄櫒浜轰换鍔�
Dt_RobotTask robotTask = new()
{
@@ -204,14 +205,14 @@
RobotTargetAddress = section[1]!,
RobotSourceAddressLineCode = stock?.SourceLineNo ?? string.Empty,
RobotTargetAddressLineCode = stock?.TargetLineNo ?? string.Empty,
- RobotRoadway = stock?.Roadway ?? string.Empty,
+ RobotRoadway = stock?.TargetLineNo == "11068" ? "娉ㄦ恫缁勭洏鏈烘鎵�" : "鎹㈢洏鏈烘鎵�" ?? string.Empty, // todo
RobotSourceAddressPalletCode = stock?.SourcePalletNo ?? string.Empty,
RobotTargetAddressPalletCode = stock?.TargetPalletNo ?? string.Empty,
- RobotTaskType = MapConfigKeyToRobotTaskType(configKey),
+ RobotTaskType = taskType,
RobotTaskState = (int)TaskRobotStatusEnum.RobotNew,
RobotGrade = task.Grade,
Creater = "WCS_Local",
- RobotTaskTotalNum = 1,
+ RobotTaskTotalNum = taskType == (int)RobotTaskTypeEnum.GroupPallet ? 48 : 1,
CreateDate = DateTime.Now
};
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
index a633f79..6e6f76a 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
@@ -127,9 +127,12 @@
/// <param name="deviceNo">璁惧缂栧彿</param>
/// <param name="currentAddress">褰撳墠鍦板潃</param>
/// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns>
- public List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes)
+ public List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes, bool isTrue = true)
{
- return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskOutStatusEnum.OutNew && outStationCodes.Contains(x.CurrentAddress), TaskOrderBy);
+ if (isTrue)
+ return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskOutStatusEnum.OutNew && outStationCodes.Contains(x.NextAddress), TaskOrderBy);
+ else
+ return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskOutStatusEnum.OutNew && !outStationCodes.Contains(x.NextAddress), TaskOrderBy);
}
/// <summary>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
index c4cc9d3..c760e6f 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
@@ -175,4 +175,41 @@
}
return null;
}
+
+ /// <summary>
+ /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <param name="currentAddress">褰撳墠鍦板潃</param>
+ /// <param name="nextAddress">涓嬩竴鍦板潃</param>
+ /// <returns></returns>
+ public Dt_Task? UpdatePosition(int taskNum, string currentAddress, string nextAddress)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(currentAddress))
+ throw new ArgumentNullException(nameof(currentAddress), "褰撳墠鍦板潃涓嶈兘涓虹┖");
+
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
+ if (task == null) throw new Exception($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+
+ string oldCurrentPos = task.CurrentAddress;
+ string oldNextPos = task.NextAddress;
+
+ task.CurrentAddress = task.NextAddress;
+ task.NextAddress = nextAddress;
+
+ task.ModifyDate = DateTime.Now;
+ task.Modifier = "System";
+ BaseDal.UpdateData(task);
+
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绯荤粺鑷姩娴佺▼锛屾洿鏂板綋鍓嶄綅缃�恵oldCurrentPos} ----> {task.CurrentAddress}銆戝拰涓嬩竴浣嶇疆銆恵oldNextPos} ----> {task.NextAddress}銆�");
+ return task;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"UpdatePosition 鏇存柊浠诲姟浣嶇疆澶辫触,浠诲姟鍙�:銆恵taskNum}銆�,閿欒淇℃伅:銆恵ex.Message}銆�");
+ }
+ return null;
+ }
}
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
index ac18766..7372d1a 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
@@ -244,6 +244,7 @@
var task = _taskService.QueryManualInboundTask(childDeviceCode);
if (task != null)
{
+ QuartzLogHelper.LogInfo(_logger, $"鑾峰彇鍒拌緭閫佺嚎寮�濮嬩换鍔★紝浠诲姟鍙凤細{task.TaskNum}锛岀姸鎬�: {task.TaskStatus},褰撳墠鍦板潃锛歿conveyorLine.DeviceCode}", conveyorLine.DeviceCode);
var handler = new ManualInboundTaskHandler(_taskService, _logger);
handler.WriteTaskToPlc(conveyorLine, childDeviceCode, task);
}
@@ -270,21 +271,21 @@
Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNo, childDeviceCode);
if (!task.IsNullOrEmpty())
{
- QuartzLogHelper.LogInfo(_logger, "Execute锛氬瓙璁惧 {ChildDeviceCode} 澶勭悊浠诲姟 {TaskNum}锛岀姸鎬�: {Status}", $"澶勭悊浠诲姟 {task.TaskNum}锛岀姸鎬�: {task.TaskStatus}", conveyorLine.DeviceCode, childDeviceCode, task.TaskNum, task.TaskStatus);
+ QuartzLogHelper.LogInfo(_logger, $"澶勭悊浠诲姟 {task.TaskNum}锛岀姸鎬�: {task.TaskStatus}", conveyorLine.DeviceCode);
// 澶勭悊浠诲姟鐘舵�侊紙鏍规嵁鐘舵�佸垎鍙戝埌涓嶅悓鏂规硶锛�
ProcessTaskState(conveyorLine, command, task, childDeviceCode);
return Task.CompletedTask;
}
else if (!command.Barcode.IsNullOrEmpty() && childDeviceCode == "11068")
{
- if (_robotTaskService.Db.Queryable<Dt_RobotTask>().Any(x => x.RobotTargetAddressPalletCode == command.Barcode))
+ var isWcsTask = _taskService.Db.Queryable<Dt_Task>().Any(x => x.PalletCode == command.Barcode && x.TaskStatus == (int)TaskOutStatusEnum.OutNew);
+ var isRobotTask = _robotTaskService.Db.Queryable<Dt_RobotTask>().Any(x => x.RobotTargetAddressPalletCode == command.Barcode);
+ if (isWcsTask || isRobotTask)
{
return Task.CompletedTask;
}
- Random rnd = new Random();
- int num = rnd.StrictNext();//浜х敓鐪熼殢鏈烘暟
- // 娌℃湁浠诲姟鍙蜂絾鏈夋潯鐮佸苟涓斿湪11068浣嶇疆锛岀洿鎺ユ坊鍔犳満姊版墜缁勭洏浠诲姟
+ // 鐩存帴娣诲姞鏈烘鎵嬬粍鐩樹换鍔�
Dt_RobotTask robotTask = new Dt_RobotTask
{
RobotTargetAddressPalletCode = command.Barcode,
@@ -296,11 +297,12 @@
RobotGrade = 1,
RobotRoadway = "娉ㄦ恫缁勭洏鏈烘鎵�",
RobotTargetAddressLineCode = childDeviceCode,
- RobotTaskNum = num, // 鐢熸垚浠诲姟鍙�
+ RobotTaskNum = Random.Shared.StrictNext(), // 鐢熸垚浠诲姟鍙�
RobotDispatchertime = DateTime.Now,
};
if (_robotTaskService.AddData(robotTask).Status)
{
+ QuartzLogHelper.LogInfo(_logger, $"鐢熶骇鏈烘鎵嬩换鍔℃垚鍔燂紝 {robotTask.RobotTaskNum}锛岀姸鎬�: {robotTask.RobotTaskState},褰撳墠鍦板潃锛歿conveyorLine.DeviceCode}", conveyorLine.DeviceCode);
conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
}
}
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
index a113186..a567ad2 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
@@ -1,5 +1,6 @@
using MapsterMapper;
using Serilog;
+using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_ITaskInfoService;
@@ -171,20 +172,41 @@
QuartzLogHelper.LogInfo(_logger, $"RequestInNextAddress锛氬叆搴撲笅涓�鍦板潃锛屼换鍔″彿: {task.TaskNum}锛屽瓙璁惧: {childDeviceCode}", conveyorLine.DeviceCode);
- //// 濡傛灉涓嶆槸绌烘墭鐩樹换鍔★紝澶勭悊鐩爣鍦板潃
- //if (task.TaskType != (int)TaskOutboundTypeEnum.OutEmpty)
- //{
+ bool isEmptyTask = task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty;
- Dt_Router routers = _routerService.QueryNextRoute(task.NextAddress, task.TargetAddress);
- if (routers == null) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+ // 纭畾鐩爣鍦板潃
+ string targetAddress;
+ if (isEmptyTask)
+ {
+ targetAddress = "2125";
+ QuartzLogHelper.LogDebug(_logger, $"瀛愯澶�: {childDeviceCode}锛屽叆搴撲笅涓�鐩爣鍦板潃: {2125}", conveyorLine.DeviceCode);
+ }
+ else
+ {
+ Dt_Router routers = _routerService.QueryNextRoute(task.NextAddress, task.TargetAddress);
+ if (routers == null) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+ targetAddress = routers.ChildPosi;
+ }
- _targetAddressSelector.HandleInboundNextAddress(conveyorLine, routers.ChildPosi, childDeviceCode);
- //}
+ // 澶勭悊鐩爣鍦板潃锛欳hildPosi == "2125" 鏃惰烦杩� HandleInboundNextAddress
+ if (targetAddress == "2125")
+ {
+ conveyorLine.SetValue(ConveyorLineDBNameNew.Target, "2125", childDeviceCode);
+ }
+ else if (!_targetAddressSelector.HandleInboundNextAddress(conveyorLine, targetAddress, childDeviceCode))
+ {
+ return;
+ }
- // 鏇存柊浠诲姟褰撳墠浣嶇疆
- _ = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
-
- // 璁剧疆 WCS_STB 鏍囧織锛岃〃绀� WCS 宸插鐞�
+ // 鏇存柊浠诲姟褰撳墠浣嶇疆鍜� WCS_ACK
+ if (isEmptyTask)
+ {
+ _ = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress, "2125");
+ }
+ else
+ {
+ _ = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
+ }
conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
}
@@ -227,29 +249,42 @@
/// <param name="conveyorLine">杈撻�佺嚎璁惧瀵硅薄</param>
/// <param name="command">PLC 鍛戒护鏁版嵁</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鐮�</param>
- public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommandNew command, string childDeviceCode)
+ public Task RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommandNew command, string childDeviceCode)
{
// 鏌ヨ寰呭鐞嗕换鍔�
Dt_Task? task = _taskFilter.QueryPendingTask(conveyorLine.DeviceCode, childDeviceCode);
- if (task != null)
+ if (task == null) return Task.CompletedTask;
+
+ // 纭畾鐩爣鍦板潃锛氱┖鎵樼洏浠诲姟浣跨敤 "2201"锛屽叾浠栦换鍔′娇鐢� NextAddress
+ var isEmptyTask = task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty;
+ var targetAddress = task.CurrentAddress == "2217" ? (isEmptyTask ? "2201" : task.NextAddress) : task.NextAddress;
+
+ // 澶勭悊鐗规畩鍦板潃 2217锛岄渶瑕佽皟鐢ㄧ洰鏍囧湴鍧�閫夋嫨鍣�
+ if (task.CurrentAddress == "2217" && !_targetAddressSelector.HandleOutboundNextAddress(conveyorLine, targetAddress, childDeviceCode))
{
- // 璁剧疆浠诲姟鍙�
- conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, task.TaskNum, childDeviceCode);
-
- // 璁剧疆鎵樼洏鏉$爜
- conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
-
- // 璁剧疆鐩爣鍦板潃
- conveyorLine.SetValue(ConveyorLineDBNameNew.Target, task.NextAddress, childDeviceCode);
-
- // 鍥炲 ACK 纭
- conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
-
- // 鏇存柊浠诲姟鐘舵��
- _taskService.UpdateTaskStatusToNext(task);
-
- QuartzLogHelper.LogInfo(_logger, "RequestOutbound锛氬嚭搴撲换鍔″凡涓嬪彂锛屼换鍔″彿: {TaskNum}锛屽瓙璁惧: {ChildDeviceCode}", $"鍑哄簱浠诲姟宸蹭笅鍙戯紝浠诲姟鍙�: {task.TaskNum}", conveyorLine.DeviceCode, task.TaskNum, childDeviceCode);
+ return Task.CompletedTask; ;
}
+
+ // 璁剧疆浠诲姟鍙枫�佹墭鐩樻潯鐮併�佺洰鏍囧湴鍧�銆乄CS_ACK
+ conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, task.TaskNum, childDeviceCode);
+ conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
+ conveyorLine.SetValue(ConveyorLineDBNameNew.Target, targetAddress, childDeviceCode);
+ conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
+
+ // 鏇存柊浠诲姟鐘舵�佹垨浣嶇疆
+ if (isEmptyTask && task.NextAddress == "2217")
+ {
+ task.TaskStatus = task.TaskStatus.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+ task.NextAddress = "2201";
+ _taskService.Repository.UpdateData(task);
+ }
+ else
+ {
+ _taskService.UpdateTaskStatusToNext(task);
+ }
+
+ QuartzLogHelper.LogInfo(_logger, "RequestOutbound锛氬嚭搴撲换鍔″凡涓嬪彂锛屼换鍔″彿: {TaskNum}锛屽瓙璁惧: {ChildDeviceCode}", $"鍑哄簱浠诲姟宸蹭笅鍙戯紝浠诲姟鍙�: {task.TaskNum}", conveyorLine.DeviceCode, task.TaskNum, childDeviceCode);
+ return Task.CompletedTask;
}
/// <summary>
@@ -257,7 +292,6 @@
/// </summary>
/// <remarks>
/// 褰撳嚭搴撲换鍔℃墽琛屽埌鏌愪釜涓棿绔欑偣鏃惰皟鐢ㄣ��
- /// 鏍规嵁涓嬩竴鍦板潃鍒ゆ柇鏄惁闇�瑕佷笌鎷樻潫鏈�/鎻掓嫈閽夋満绛夎澶囦氦浜掋��
/// </remarks>
/// <param name="conveyorLine">杈撻�佺嚎璁惧瀵硅薄</param>
/// <param name="command">PLC 鍛戒护鏁版嵁</param>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineTargetAddressSelector.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineTargetAddressSelector.cs
index 0cd3ffd..a950009 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineTargetAddressSelector.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineTargetAddressSelector.cs
@@ -130,7 +130,7 @@
/// <param name="conveyorLine">杈撻�佺嚎璁惧瀵硅薄锛岀敤浜庡啓鍏ョ洰鏍囧湴鍧�鍜� ACK 淇″彿</param>
/// <param name="nextAddress">涓嬩竴鍦板潃/鐩爣璁惧缂栫爜锛岀敤浜庤瘑鍒洰鏍囪澶囩被鍨�</param>
/// <param name="childDeviceCode">褰撳墠瀛愯澶囩紪鐮侊紝鐢ㄤ簬绮剧‘瀹氫綅鍐欏叆鍝釜瀛愯澶�</param>
- public void HandleInboundNextAddress(CommonConveyorLine conveyorLine, string nextAddress, string childDeviceCode)
+ public bool HandleInboundNextAddress(CommonConveyorLine conveyorLine, string nextAddress, string childDeviceCode)
{
// 璁板綍鍏ュ簱鍦烘櫙鐨勮皟璇曟棩蹇楋紝鍖呭惈瀛愯澶囧拰鐩爣鍦板潃淇℃伅
WriteDebug(conveyorLine, "鍏ュ簱涓嬩竴鍦板潃", childDeviceCode, nextAddress);
@@ -141,8 +141,9 @@
bool isAvailable = cvState == 2;
if (isAvailable)
{
- conveyorLine.SetValue(ConveyorLineDBNameNew.Target, Convert.ToInt16(nextAddress), childDeviceCode);
+ return conveyorLine.SetValue(ConveyorLineDBNameNew.Target, Convert.ToInt16(nextAddress), childDeviceCode);
}
+ return false;
}
/// <summary>
@@ -155,7 +156,7 @@
/// <param name="conveyorLine">杈撻�佺嚎璁惧瀵硅薄锛岀敤浜庡啓鍏ョ洰鏍囧湴鍧�鍜� ACK 淇″彿</param>
/// <param name="nextAddress">涓嬩竴鍦板潃/鐩爣璁惧缂栫爜锛岀敤浜庤瘑鍒洰鏍囪澶囩被鍨�</param>
/// <param name="childDeviceCode">褰撳墠瀛愯澶囩紪鐮侊紝鐢ㄤ簬绮剧‘瀹氫綅鍐欏叆鍝釜瀛愯澶�</param>
- public void HandleOutboundNextAddress(CommonConveyorLine conveyorLine, string nextAddress, string childDeviceCode)
+ public bool HandleOutboundNextAddress(CommonConveyorLine conveyorLine, string nextAddress, string childDeviceCode)
{
// 璁板綍鍑哄簱鍦烘櫙鐨勮皟璇曟棩蹇楋紝鍖呭惈瀛愯澶囧拰鐩爣鍦板潃淇℃伅
WriteDebug(conveyorLine, "鍑哄簱涓嬩竴鍦板潃", childDeviceCode, nextAddress);
@@ -166,8 +167,9 @@
bool isAvailable = cvState == 2;
if (isAvailable)
{
- conveyorLine.SetValue(ConveyorLineDBNameNew.Target, Convert.ToInt16(nextAddress), childDeviceCode);
+ return conveyorLine.SetValue(ConveyorLineDBNameNew.Target, Convert.ToInt16(nextAddress), childDeviceCode);
}
+ return false;
}
/// <summary>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
index 4b8b7fe..23adac0 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
@@ -53,13 +53,24 @@
try
{
// 鍐欏叆浠诲姟鍙�
- conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, (short)task.TaskNum, childDeviceCode);
- // 鍐欏叆璧峰鍦板潃
- conveyorLine.SetValue(ConveyorLineDBNameNew.Source, short.Parse(task.SourceAddress ?? "0"), childDeviceCode);
+ var isTaskNum = conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, (short)task.TaskNum, childDeviceCode);
+ if (!isTaskNum) return;
+ QuartzLogHelper.LogInfo(_logger, $"浠诲姟鍙峰啓鍏LC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆�", conveyorLine.DeviceCode);
+ Thread.Sleep(500);
+
+ //// 鍐欏叆璧峰鍦板潃
+ //conveyorLine.SetValue(ConveyorLineDBNameNew.Source, short.Parse(task.SourceAddress ?? "0"), childDeviceCode);
+ //QuartzLogHelper.LogInfo(_logger, $"浠诲姟鍙峰啓鍏LC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆�", conveyorLine.DeviceCode);
+ //Thread.Sleep(500);
+
// 鍐欏叆鐩爣鍦板潃
- conveyorLine.SetValue(ConveyorLineDBNameNew.Target, short.Parse(task.NextAddress ?? "0"), childDeviceCode);
+ var isTarget = conveyorLine.SetValue(ConveyorLineDBNameNew.Target, short.Parse(task.NextAddress ?? "0"), childDeviceCode);
+ if (!isTarget) return;
+ QuartzLogHelper.LogInfo(_logger, $"鐩爣鍦板潃鍐欏叆PLC鎴愬姛锛岀洰鏍囧湴鍧�銆恵task.NextAddress}銆�", conveyorLine.DeviceCode);
+ Thread.Sleep(500);
+
// 鍐欏叆鎵樼洏鍙�
- conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
+ //conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
// 鏇存柊浠诲姟鐘舵�佸埌涓嬩竴闃舵
var updateResult = _taskService.UpdateTaskStatusToNext(task);
@@ -72,7 +83,7 @@
// 鍐欏叆ACK鏍囧織
conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
- QuartzLogHelper.LogInfo(_logger, $"ManualInboundTaskHandler: 鎵嬪姩浠诲姟鍐欏叆PLC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆戯紝婧愬湴鍧�銆恵task.SourceAddress}銆�", conveyorLine.DeviceCode);
+ QuartzLogHelper.LogInfo(_logger, $"ManualInboundTaskHandler: 鎵嬪姩浠诲姟鍐欏叆PLC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆戯紝婧愬湴鍧�銆恵task.SourceAddress}銆戯紝鐩爣鍦板潃銆恵task.NextAddress}銆�", conveyorLine.DeviceCode);
}
catch (Exception ex)
{
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
index 8daf967..c97e7ed 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
@@ -122,7 +122,7 @@
// 鍒濆鍖栧懡浠ゅ鐞嗗櫒
// 绠�鍗曞懡浠ゅ鐞嗗櫒锛氬鐞嗙姸鎬佹洿鏂扮瓑绠�鍗曞懡浠�
- var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor, socketGateway, _logger);
+ var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor, socketGateway, _logger, _stateManager);
// 鍓嶇紑鍛戒护澶勭悊鍣細澶勭悊 pickfinished銆乸utfinished 绛夊甫鍙傛暟鐨勫懡浠�
var prefixCommandHandler = new RobotPrefixCommandHandler(robotTaskService, _taskProcessor, _stateManager, socketGateway, fakeBatteryPositionService, _logger);
@@ -212,10 +212,10 @@
var task = _taskProcessor.GetTask(robotCrane);
// 濡傛灉娌℃湁鑾峰彇鍒板緟澶勭悊浠诲姟锛屼笖RobotArmObject涓�1锛堟湁鐗╂枡锛夛紝鍒欒幏鍙栬璁惧鎵ц涓殑浠诲姟
- if (task == null && state.RobotArmObject == 1)
- {
- task = _taskProcessor.GetExecutingTask(robotCrane);
- }
+ //if (task == null && state.RobotArmObject == 1)
+ //{
+ // task = _taskProcessor.GetExecutingTask(robotCrane);
+ //}
// 濡傛灉鏈夊緟澶勭悊浠诲姟
if (task != null)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
index 90a5b70..3dc5a22 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
@@ -92,7 +92,7 @@
if (state.OperStatus == message)
{
// 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
- await _socketClientGateway.SendMessageAsync(client, message);
+ //await _socketClientGateway.SendMessageAsync(client, message);
}
// 璁板綍鎺ユ敹鍒扮殑娑堟伅鏃ュ織
QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�", state.RobotCrane?.DeviceName);
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
index 7ec1101..f0b8b36 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
@@ -170,36 +170,35 @@
// 鏋勫缓鍙栬揣鎸囦护锛屾牸寮忥細Pickbattery,{婧愬湴鍧�}
string taskString = $"Pickbattery,{task.RobotSourceAddress}";
- // 閫氳繃 Socket 缃戝叧鍙戦�佹寚浠ゅ埌鏈哄櫒浜哄鎴风
- bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+ // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
+ task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
- if (result)
+ // 灏嗕换鍔″叧鑱斿埌鐘舵�佸璞�
+ state.CurrentTask = task;
+
+ if (isScanNG)
{
- // 鍙戦�佹垚鍔燂紝璁板綍 Info 鏃ュ織
- QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
-
- // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
- task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
-
- // 灏嗕换鍔″叧鑱斿埌鐘舵�佸璞�
- state.CurrentTask = task;
-
- if (isScanNG)
- {
- state.IsScanNG = true;
- }
-
- // 淇濇寔鍘熻涔夛細浠呭湪鐘舵�佸畨鍏ㄥ啓鍏ユ垚鍔熷悗鍐嶆洿鏂颁换鍔$姸鎬�
- // 杩欐牱鍙互纭繚鐘舵�佸拰浠诲姟璁板綍鐨勪竴鑷存��
- if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
- {
- await _robotTaskService.UpdateRobotTaskAsync(task);
- }
+ state.IsScanNG = true;
}
- else
+
+ // 淇濇寔鍘熻涔夛細浠呭湪鐘舵�佸畨鍏ㄥ啓鍏ユ垚鍔熷悗鍐嶆洿鏂颁换鍔$姸鎬�
+ // 杩欐牱鍙互纭繚鐘舵�佸拰浠诲姟璁板綍鐨勪竴鑷存��
+ if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
{
- // 鍙戦�佸け璐ワ紝璁板綍 Error 鏃ュ織
- QuartzLogHelper.LogError(_logger, $"涓嬪彂鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ QuartzLogHelper.LogInfo(_logger, $"鐘舵�佹洿鏂版垚鍔燂紝璁惧: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ // 閫氳繃 Socket 缃戝叧鍙戦�佹寚浠ゅ埌鏈哄櫒浜哄鎴风
+ bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+ if (result)
+ {
+ // 鍙戦�佹垚鍔燂紝璁板綍 Info 鏃ュ織
+ QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
+ }
+ else
+ {
+ // 鍙戦�佸け璐ワ紝璁板綍 Error 鏃ュ織
+ QuartzLogHelper.LogError(_logger, $"涓嬪彂鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ }
}
}
@@ -234,27 +233,26 @@
// 鏍囪鐐逛綅涓哄凡浣跨敤
_fakeBatteryPositionService.MarkAsUsed(positions);
- // 閫氳繃 Socket 缃戝叧鍙戦�佹寚浠ゅ埌鏈哄櫒浜哄鎴风
- bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+ // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
+ task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
- if (result)
+ // 灏嗕换鍔″叧鑱斿埌鐘舵�佸璞�
+ state.CurrentTask = task;
+
+ if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
{
- QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛岀偣浣�: {string.Join(",", positions)}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ // 閫氳繃 Socket 缃戝叧鍙戦�佹寚浠ゅ埌鏈哄櫒浜哄鎴风
+ bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
- // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
- task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
-
- // 灏嗕换鍔″叧鑱斿埌鐘舵�佸璞�
- state.CurrentTask = task;
-
- if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
+ if (result)
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛岀偣浣�: {string.Join(",", positions)}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
- }
- else
- {
- QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ else
+ {
+ QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ }
}
}
@@ -307,31 +305,31 @@
/// <param name="batchEnd">鎵规缁撴潫缂栧彿</param>
public async Task SendPickWithBatchAsync(Dt_RobotTask task, RobotSocketState state, string position, int batchStart, int batchEnd)
{
- // 鍏堝彂閫佹�绘暟鎸囦护
- string totalNumCmd = $"PickTotalNum,{task.RobotTaskTotalNum}";
- await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
- // 鍐嶅彂閫佹壒娆″彇璐ф寚浠�
- string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
- string taskString = $"Pickbattery,{position},{range}";
+ task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
+ state.CurrentTask = task;
- bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
-
- if (result)
+ if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
{
- QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ // 鍏堝彂閫佹�绘暟鎸囦护
+ string totalNumCmd = $"PickTotalNum,{task.RobotTaskTotalNum}";
+ await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
- task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
- state.CurrentTask = task;
+ // 鍐嶅彂閫佹壒娆″彇璐ф寚浠�
+ string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
+ string taskString = $"Pickbattery,{position},{range}";
- if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
+ bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+
+ if (result)
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
- }
- else
- {
- QuartzLogHelper.LogError(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ else
+ {
+ QuartzLogHelper.LogError(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ }
}
}
@@ -351,31 +349,31 @@
/// <param name="batchEnd">鎵规缁撴潫缂栧彿</param>
public async Task SendFakeBatteryPickWithBatchAsync(Dt_RobotTask task, RobotSocketState state, int batchStart, int batchEnd)
{
- // 鍏堝彂閫佹�绘暟鎸囦护
- string totalNumCmd = $"PickTotalNum,{task.RobotTaskTotalNum}";
- await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
+ task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
+ state.CurrentTask = task;
- // 鍐嶅彂閫佹壒娆″彇璐ф寚浠わ紙鍋囩數鑺浐瀹氫粠5鍙蜂綅鍙栵級
- string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
- string taskString = $"Pickbattery,5,{range}";
-
- bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
-
- if (result)
+ if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
{
- QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ // 鍏堝彂閫佹�绘暟鎸囦护
+ string totalNumCmd = $"PickTotalNum,{task.RobotTaskTotalNum}";
+ await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
- task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
- state.CurrentTask = task;
+ // 鍐嶅彂閫佹壒娆″彇璐ф寚浠わ紙鍋囩數鑺浐瀹氫粠5鍙蜂綅鍙栵級
+ string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
+ string taskString = $"Pickbattery,5,{range}";
- if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
+ bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+
+ if (result)
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
- }
- else
- {
- QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ else
+ {
+ QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ }
}
}
@@ -396,31 +394,31 @@
/// <param name="batchEnd">鎵规缁撴潫缂栧彿</param>
public async Task SendPutWithBatchAsync(Dt_RobotTask task, RobotSocketState state, string position, int batchStart, int batchEnd)
{
- // 鍏堝彂閫佹�绘暟鎸囦护
- string totalNumCmd = $"PutTotalNum,{task.RobotTaskTotalNum}";
- await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
+ task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
+ state.CurrentTask = task;
- // 鍐嶅彂閫佹壒娆℃斁璐ф寚浠�
- string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
- string taskString = $"Putbattery,{position},{range}";
-
- bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
-
- if (result)
+ if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
{
- QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ // 鍏堝彂閫佹�绘暟鎸囦护
+ string totalNumCmd = $"PutTotalNum,{task.RobotTaskTotalNum}";
+ await _socketClientGateway.SendToClientAsync(state.IPAddress, totalNumCmd);
- task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
- state.CurrentTask = task;
+ // 鍐嶅彂閫佹壒娆℃斁璐ф寚浠�
+ string range = batchEnd == 0 ? $"{batchStart}-0" : $"{batchStart}-{batchEnd}";
+ string taskString = $"Putbattery,{position},{range}";
- if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
+ bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
+
+ if (result)
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
- }
- else
- {
- QuartzLogHelper.LogError(_logger, $"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ else
+ {
+ QuartzLogHelper.LogError(_logger, $"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
+ }
}
}
@@ -785,5 +783,11 @@
return result;
}
+
+ public bool UpdateRobotTask(Dt_RobotTask task)
+ {
+ WebResponseContent content = _robotTaskService.UpdateData(task);
+ return content.Status;
+ }
}
}
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
index b0c1d9d..5c709bf 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
@@ -1,4 +1,6 @@
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using Serilog;
+using System.Net;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_Model.Models;
@@ -42,15 +44,24 @@
private readonly ILogger _logger;
/// <summary>
+ /// 鏈烘鎵嬬姸鎬佺鐞嗗櫒
+ /// </summary>
+ /// <remarks>
+ /// 鐢ㄤ簬璇诲彇鍜屾洿鏂版満鍣ㄤ汉鐨勭姸鎬併��
+ /// </remarks>
+ private readonly RobotStateManager _stateManager;
+
+ /// <summary>
/// 鏋勯�犲嚱鏁�
/// </summary>
/// <param name="taskProcessor">浠诲姟澶勭悊鍣ㄥ疄渚�</param>
/// <param name="logger">鏃ュ織璁板綍鍣�</param>
- public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor, ISocketClientGateway socketClientGateway, ILogger logger)
+ public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor, ISocketClientGateway socketClientGateway, ILogger logger, RobotStateManager stateManager)
{
_taskProcessor = taskProcessor;
_socketClientGateway = socketClientGateway;
_logger = logger;
+ _stateManager = stateManager;
}
/// <summary>
@@ -140,6 +151,21 @@
state.BatteryArrived = false;
await _socketClientGateway.SendToClientAsync(state.IPAddress, "batteryarrivedno");
+ return true;
+ // ==================== 鎺ユ敹浠诲姟鍙嶉 ====================
+
+ // 鍙栬揣鎺ユ敹
+ case "pickbatteryover":
+ var isResult = UpdateStatus(state, true);
+ if (!isResult)
+ return false;
+ return true;
+
+ // 鏀捐揣鎺ユ敹
+ case "putbatteryover":
+ isResult = UpdateStatus(state, false);
+ if (!isResult)
+ return false;
return true;
// ==================== 鍏ㄩ儴瀹屾垚鍛戒护 ====================
@@ -432,5 +458,17 @@
return false;
}
}
+
+ public bool UpdateStatus(RobotSocketState state, bool isPick)
+ {
+ var task = _taskProcessor.GetTask(state?.RobotCrane);
+ if (task == null)
+ {
+ QuartzLogHelper.LogError(_logger, $"鍙栬揣鎺ユ敹澶辫触: 鏈壘鍒般�恵state?.RobotCrane}銆戠殑浠诲姟", state.RobotCrane?.DeviceName ?? "Unknown");
+ }
+ task.RobotTaskState = (int)TaskRobotStatusEnum.RobotExecuting;
+ _taskProcessor.UpdateRobotTask(task);
+ return true;
+ }
}
}
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
index ec3d757..2567908 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -273,7 +273,7 @@
if (_stateManager.TryUpdateStateSafely(ipAddress, stateToUpdate))
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
}
}
@@ -337,15 +337,15 @@
// 濡傛灉鏉$爜鐢熸垚鎴愬姛
if (!string.IsNullOrEmpty(trayBarcode1) && !string.IsNullOrEmpty(trayBarcode2))
{
- if (stateForUpdate.CellBarcode.Contains(trayBarcode1) || stateForUpdate.CellBarcode.Contains(trayBarcode2))
- {
- QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鐢佃姱鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+ //if (stateForUpdate.CellBarcode.Contains(trayBarcode1) || stateForUpdate.CellBarcode.Contains(trayBarcode2))
+ //{
+ // QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鐢佃姱鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
- // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
- //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
- return;
- }
- else
+ // // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
+ // //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ // return;
+ //}
+ //else
{
if (trayBarcode1.Length < 13 || trayBarcode2.Length < 13)
{
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
index 1e5c562..abe9f65 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
@@ -1,6 +1,7 @@
using Newtonsoft.Json;
using Serilog;
using System.Diagnostics.CodeAnalysis;
+using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEAWCS_Common.Constants;
using WIDESEAWCS_Common.HttpEnum;
@@ -150,10 +151,10 @@
return selectedTask;
}
- // ===== TargetAddress 涓嶅彲鐢ㄦ椂锛屽厛灏濊瘯鍚� NextAddress 鐨勫叾浠栦换鍔� =====
+ // ===== TargetAddress 涓嶅彲鐢ㄦ椂锛屽厛灏濊瘯鍚� NextAddress涓嶅悓TargetAddress 鐨勫叾浠栦换鍔� =====
var sameStationTasks = _taskService
.QueryStackerCraneOutTasks(deviceCode, new List<string> { candidateTask.NextAddress })
- .Where(x => x.TaskId != candidateTask.TaskId)
+ .Where(x => x.TaskId != candidateTask.TaskId && x.TargetAddress != candidateTask.TargetAddress)
.ToList();
foreach (var sameStationTask in sameStationTasks)
@@ -168,13 +169,8 @@
// ===== 鍚� NextAddress 鏃犲彲鐢ㄤ换鍔★紝灏濊瘯涓嶅悓 NextAddress 鐨勪换鍔� =====
// 鏌ユ壘鍏朵粬鍙敤鐨勫嚭搴撶珯鍙�
- var otherOutStationCodes = _routerService
- .QueryNextRoutes(deviceCode, candidateTask.NextAddress, candidateTask.TaskType)
- .Select(x => x.ChildPosi)
- .ToList();
-
// 鏌ヨ鍏朵粬绔欏彴鐨勫嚭搴撲换鍔�
- var tasks = _taskService.QueryStackerCraneOutTasks(deviceCode, otherOutStationCodes);
+ var tasks = _taskService.QueryStackerCraneOutTasks(deviceCode, new List<string> { candidateTask.NextAddress }, false);
foreach (var alternativeTask in tasks)
{
selectedTask = TrySelectOutboundTask(alternativeTask);
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
index 53ef4b5..c9e31b3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -141,7 +141,10 @@
var locations = await BaseDal.QueryDataAsync(x =>
x.EnableStatus == EnableStatusEnum.Normal.GetHashCode() &&
x.RoadwayNo == roadwayNo &&
- x.LocationStatus == LocationStatusEnum.Free.GetHashCode());
+ x.LocationStatus == LocationStatusEnum.Free.GetHashCode() &&
+ (roadwayNo.Contains("HC")
+ ? x.LocationType == (int)LocationTypeEnum.Capacity
+ : x.LocationType == (int)LocationTypeEnum.ShelfCapacity));
return locations?
.OrderByDescending(x => x.Depth) // 1. 娣卞害浼樺厛锛堜粠澶у埌灏忥級
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/Constants/TaskAddressConstants.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/Constants/TaskAddressConstants.cs
index 43f725f..e4ae783 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/Constants/TaskAddressConstants.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/Constants/TaskAddressConstants.cs
@@ -28,6 +28,11 @@
/// <summary>
/// 鍒嗗搴撳嚭搴撳湴鍧�
/// </summary>
- public const string GRADING_OUTBOUND_ADDRESS = "10081";
+ public const string GRADING_OUTBOUND_ADDRESS = "2103";
+
+ /// <summary>
+ /// 鍒嗗搴撳嚭搴撳湴鍧�
+ /// </summary>
+ public const string GRADING_RoadWayNo = "HCSC1";
}
}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs
index 6916e59..eda44d5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs
@@ -19,10 +19,10 @@
Undefined = 0,
/// <summary>
- /// 妯″垏娈�
+ /// 璐ф灦
/// </summary>
- [Description("妯″垏娈�")]
- SmallPallet = 1,
+ [Description("璐ф灦")]
+ ShelfCapacity = 1,
/// <summary>
/// 鍗风粫娈�
@@ -43,15 +43,15 @@
ExtraPallet = 4,
/// <summary>
- /// 鍖栨垚绌烘墭鐩�
+ /// 鍒嗗宸ヨ鏋�
/// </summary>
- [Description("鍖栨垚绌烘墭鐩�")]
- HCTrayPallet = 5,
+ [Description("鍒嗗宸ヨ鏋�")]
+ SubRackType = 5,
/// <summary>
- /// 鍖栨垚鍒嗗鎵樼洏
+ /// 鍒嗗鏌�
/// </summary>
- [Description("鍖栨垚鍒嗗鎵樼洏")]
- HCFRPallet = 6,
+ [Description("鍒嗗鏌�")]
+ Capacity = 6,
}
}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_GradingMachine.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_GradingMachine.cs
index 29ecd75..23d3d27 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_GradingMachine.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_GradingMachine.cs
@@ -49,12 +49,19 @@
if (stockInfo == null)
{
var location = await _locationInfoService.GetLocationInfoAsync(input.LocationCode);
- locationStatus = location?.LocationStatus ?? 0;
+ locationStatus = location?.LocationStatus == (int)LocationStatusEnum.InStock ? 10 : 0;
}
else
{
- locationStatus = stockInfo.LocationDetails?.LocationStatus ?? 0;
+ locationStatus = MapLocationStatus(stockInfo.StockStatus);
}
+
+ int MapLocationStatus(int stockStatus) => stockStatus switch
+ {
+ (int)StockStatusEmun.鍏ュ簱瀹屾垚 => 10,
+ (int)StockStatusEmun.绌烘墭鐩樺簱瀛� => 11,
+ _ => 0
+ };
OutputDto outPutDto = new OutputDto()
{
@@ -91,8 +98,8 @@
var result = await _locationInfoService.Db.Updateable<Dt_LocationInfo>()
.SetColumns(s => new Dt_LocationInfo
{
- LocationStatus = input.LocationStatus
- }).Where(s => s.LocationCode == input.LocationCode).ExecuteCommandAsync() > 0;
+ EnableStatus = input.LocationStatus == 1 ? 0 : 3,
+ }).Where(s => s.LocationCode == input.LocationCode && s.RoadwayNo == TaskAddressConstants.GRADING_RoadWayNo).ExecuteCommandAsync() > 0;
if (result)
{
@@ -127,40 +134,41 @@
var stock = await _stockInfoService.GetStockInfoAsync(input.PalletCode, input.LocationCode);
if (stock == null)
{
- content.Error("鏈壘鍒板搴旂殑鎵樼洏");
+ return content.Error("鏈壘鍒板搴旂殑鎵樼洏");
}
- else
- {
- var taskList = new Dt_Task
- {
- WarehouseId = stock.WarehouseId,
- PalletCode = stock.PalletCode,
- PalletType = stock.PalletType,
- SourceAddress = stock.LocationCode,
- CurrentAddress = stock.LocationCode,
- NextAddress = TaskAddressConstants.DEFAULT_ADDRESS,
- TargetAddress = TaskAddressConstants.GRADING_OUTBOUND_ADDRESS,
- Roadway = stock.LocationDetails.RoadwayNo,
- TaskType = TaskOutboundTypeEnum.Outbound.GetHashCode(),
- TaskStatus = TaskOutStatusEnum.OutNew.GetHashCode(),
- Grade = 1,
- TaskNum = await BaseDal.GetTaskNo(),
- Creater = "system",
- };
+ var taskList = new Dt_Task
+ {
+ WarehouseId = stock.WarehouseId,
+ PalletCode = stock.PalletCode,
+ PalletType = stock.PalletType,
+ SourceAddress = stock.LocationCode,
+ CurrentAddress = stock.LocationCode,
+ NextAddress = TaskAddressConstants.DEFAULT_ADDRESS,
+ TargetAddress = TaskAddressConstants.GRADING_OUTBOUND_ADDRESS,
+ Roadway = stock.LocationDetails.RoadwayNo,
+ TaskType = TaskOutboundTypeEnum.Outbound.GetHashCode(),
+ TaskStatus = TaskOutStatusEnum.OutNew.GetHashCode(),
+ Grade = 1,
+ TaskNum = await BaseDal.GetTaskNo(),
+ Creater = "system",
+ };
+
+ return await _unitOfWorkManage.BeginTranAsync(async () =>
+ {
var result = await BaseDal.AddDataAsync(taskList) > 0;
var wmstaskDto = result ? _mapper.Map<WMSTaskDTO>(taskList) : null;
var httpResponse = _httpClientHelper.Post<WebResponseContent>("http://logistics-service/api/logistics/notifyoutbound", JsonSerializer.Serialize(wmstaskDto)).Data;
if (result && httpResponse != null)
{
- content.OK("鍑哄簱璇锋眰鎴愬姛");
+ return content.OK("鍑哄簱璇锋眰鎴愬姛");
}
else
{
- content.Error("鍑哄簱璇锋眰澶辫触");
+ return content.Error("鍑哄簱璇锋眰澶辫触");
}
- }
+ });
}
catch (Exception ex)
{
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs
index ead9c74..8c1d4b2 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs
@@ -85,9 +85,24 @@
WebResponseContent content = new WebResponseContent();
return await _unitOfWorkManage.BeginTranAsync(async () =>
{
+ if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty)
+ {
+ location.LocationStatus = LocationStatusEnum.Free.GetHashCode();
+
+ var updateResult = await _locationInfoService.UpdateLocationInfoAsync(location);
+ var deleteResult = _stockInfoService.DeleteData(stockInfo).Status;
+ if (!updateResult && !deleteResult)
+ return content.Error("浠诲姟瀹屾垚澶辫触");
+
+ var completeResult1 = await CompleteTaskAsync(task, "鍑哄簱瀹屾垚");
+ return content.OK();
+
+ }
+
stockInfo.LocationId = 0;
stockInfo.LocationCode = string.Empty;
stockInfo.OutboundDate = DateTime.Now;
+ stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱瀹屾垚;
location.LocationStatus = LocationStatusEnum.Free.GetHashCode();
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
index 8151757..8ffa8e0 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -34,7 +34,7 @@
"MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
//杩炴帴瀛楃涓�
//"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
- "ConnectionString": "Data Source=192.168.60.30;Initial Catalog=WIDESEAWMS_ShanMei;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+ "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ShanMei;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
//"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ShanMei;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
//"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
//鏃MS鏁版嵁搴撹繛鎺�
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\256/\345\214\226\346\210\220\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\2561.1.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\256/\345\214\226\346\210\220\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\2561.1.xls"
index 24c0a4c..749ba3b 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\256/\345\214\226\346\210\220\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\2561.1.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\256/\345\214\226\346\210\220\345\210\206\345\256\271\346\237\234\346\216\245\345\217\243\345\215\217\350\256\2561.1.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS\350\276\223\351\200\201\345\257\271\346\216\245\345\234\260\345\235\200\350\241\250_0420.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS\350\276\223\351\200\201\345\257\271\346\216\245\345\234\260\345\235\200\350\241\250_0420.xlsx"
new file mode 100644
index 0000000..628813b
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS\350\276\223\351\200\201\345\257\271\346\216\245\345\234\260\345\235\200\350\241\250_0420.xlsx"
Binary files differ
--
Gitblit v1.9.3