From 9ce6687843bd5079b7a87925df0bc7e3ddf2d36a Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期三, 01 四月 2026 11:53:38 +0800
Subject: [PATCH] 最新
---
项目代码/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WMSTaskService.cs | 97 ++++++++++++++++++++++++++++--------------------
1 files changed, 57 insertions(+), 40 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WMSTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WMSTaskService.cs"
index 1de7519..cb8e0d6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WMSTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WMSTaskService.cs"
@@ -17,6 +17,7 @@
using AutoMapper;
using Castle.Components.DictionaryAdapter.Xml;
+using HslCommunication;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.OpenApi.Any;
@@ -158,14 +159,21 @@
ApiResponse apiResponse = new ApiResponse();
try
{
- IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1002");
- if (device == null) return apiResponse.ErrorResponse("WCS鏈兘鑾峰彇鍒板簱鍙e疄渚�");
- CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+
Dictionary<string, int> portStatusDict = new Dictionary<string, int>();
foreach (string DeStateName in datas)
{
+ string DeciceCodes = "1003";
+ if (DeStateName.StartsWith("C")) DeciceCodes = "1004";
+
+
+ IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeciceCodes);
+ if (device == null) return apiResponse.ErrorResponse("WCS鏈兘鑾峰彇鍒板簱鍙e疄渚�");
+ CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+
+
//鏄惁鍙繘鍑�
DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == DeStateName && x.DeviceProParamName == "PermitHandShake");
//鏄惁鏈夎揣
@@ -173,12 +181,21 @@
if (deviceProDTO == null || StationNumProDTO ==null) return apiResponse.ErrorResponse($"WCS鏈壘鍒板簱鍙o細{DeStateName},瀵瑰簲鐨勫崗璁�");
int statusValue = 0;
- int portStatus = conveyorLine.Communicator.Read<int>(deviceProDTO.DeviceProAddress);
- int StationStatus = conveyorLine.Communicator.Read<int>(StationNumProDTO.DeviceProAddress);
+ //1鍏佽鍙� 2鍏佽鏀�
+ int portStatus = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress);
+ //鏄惁鏈夎揣
+ int StationStatus = conveyorLine.Communicator.Read<ushort>(StationNumProDTO.DeviceProAddress);
- //鏈夎揣锛屽彲杩涗俊鍙�
- statusValue = ((portStatus == 1 && StationStatus == 1) || (portStatus == 2 && StationStatus == 0)) ? 1 : (portStatus == 0) ? 0 : 0;
+ if(DeStateName== "G01" || DeStateName == "G06" || DeStateName == "G07")
+ {
+ //鏈夎揣锛屽彲杩涗俊鍙�
+ statusValue = (portStatus == 1 && StationStatus == 1) ? 1 : (portStatus == 2 && StationStatus == 0) ?0: (portStatus == 0) ? 0 : 0;
+ }
+ else
+ {
+ statusValue = StationStatus == 1 ? 0 : 1;
+ }
portStatusDict[DeStateName] = statusValue;
}
@@ -240,52 +257,45 @@
ApiResponse apiResponse = new ApiResponse();
try
{
- IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1002");
+ string DeciceCodes = "1003";
+ if (agvUpdateRequest.warehousenumber.StartsWith("C")) DeciceCodes = "1004";
+
+ IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeciceCodes);
if (device == null) return apiResponse.ErrorResponse("WCS鏈兘鑾峰彇鍒板簱鍙e疄渚�");
CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
-
-
-
-
//鏄惁鍙繘鍑�
DeviceProDTO? HandShake = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == agvUpdateRequest.warehousenumber && x.DeviceProParamName == "HandShake");
if (HandShake == null) return apiResponse.ErrorResponse($"WCS鏈壘鍒板簱鍙o細{agvUpdateRequest.warehousenumber},瀵瑰簲鐨勫崗璁�");
-
-
if (agvUpdateRequest.agvstatus == 1)
{
-
-
- //鏄惁鍙繘鍑�
- DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == agvUpdateRequest.warehousenumber && x.DeviceProParamName == "PermitHandShake");
- //鏄惁鏈夎揣
- DeviceProDTO? StationNumProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == agvUpdateRequest.warehousenumber && x.DeviceProParamName == "StationNum");
- if (deviceProDTO == null || StationNumProDTO == null) return apiResponse.ErrorResponse($"WCS鏈壘鍒板簱鍙o細{agvUpdateRequest.warehousenumber},瀵瑰簲鐨勫崗璁�");
- int statusValue = 0;
- int portStatus = conveyorLine.Communicator.Read<int>(deviceProDTO.DeviceProAddress);
- int StationStatus = conveyorLine.Communicator.Read<int>(StationNumProDTO.DeviceProAddress);
- //鏈夎揣锛屽彲杩涗俊鍙�
- statusValue = ((portStatus == 1 && StationStatus == 1) || (portStatus == 2 && StationStatus == 0)) ? 1 : (portStatus == 0) ? 0 : 0;
-
- if (statusValue == 1)
-
- {//鍐欏叆杈撻�佺嚎淇″彿
- bool HandShakebool = conveyorLine.Communicator.Write<short>(HandShake.DeviceProAddress, 1);
- if (HandShakebool)
+ //鍐欏叆plc锛宎gv杩涘叆淇″彿
+ bool HandShakebool = conveyorLine.Communicator.Write<short>(HandShake.DeviceProAddress, 1);
+ if (HandShakebool)
+ {
+ //鏄惁鍙繘鍑� 1鍏佽鍙� 2鍏佽鏀�
+ DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == agvUpdateRequest.warehousenumber && x.DeviceProParamName == "PermitHandShake");
+ //鏄惁鏈夎揣
+ DeviceProDTO? StationNumProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == agvUpdateRequest.warehousenumber && x.DeviceProParamName == "StationNum");
+ if (deviceProDTO == null || StationNumProDTO == null) return apiResponse.ErrorResponse($"WCS鏈壘鍒板簱鍙o細{agvUpdateRequest.warehousenumber},瀵瑰簲鐨勫崗璁�");
+ int statusValue = 0;
+ int portStatus = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress);
+ int StationStatus = conveyorLine.Communicator.Read<ushort>(StationNumProDTO.DeviceProAddress);
+ //鏈夎揣锛屽彲杩涗俊鍙�
+ statusValue = ((portStatus == 1 && StationStatus == 1) || (portStatus == 2 && StationStatus == 0)) ? 1 : (portStatus == 0) ? 0 : 0;
+ if (statusValue == 1)
{
return apiResponse.SuccessResponse();
}
else
{
- return apiResponse.ErrorResponse("agv鍐欏叆plc鐢宠澶辫触");
+ return apiResponse.ErrorResponse("璇诲彇plc涓嶅彲杩涘叆淇℃伅");
}
-
}
else
{
- return apiResponse.ErrorResponse("璇诲彇plc涓嶅彲杩涘叆淇℃伅");
+ return apiResponse.ErrorResponse("鍐欏叆plc杩涘叆淇″彿澶辫触");
}
}
else if(agvUpdateRequest.agvstatus == 2)
@@ -326,17 +336,20 @@
taskInfo1.taskType = taskType;
taskInfo1.invType = invType;
taskInfo1.psd = "akjfapjfpadaoif";
+
commandResult = HttpHelper.Post<CommandResult>(urlWMStaskreturn, taskInfo1, "浠诲姟鐘舵�佸洖璋�");
- WriteLog.Write_Log("鍚屾缁欎笂娓稿弽棣堜换鍔″畬鎴�", "浠诲姟淇℃伅", $"浠诲姟鍙凤細{taskId}", $"璋冨彇鍙傛暟锛歿taskInfo1.ToJson()},杩斿洖鍙傛暟锛歿commandResult.ToJson()}");
+ WriteLog.Write_Log("鍚屾缁欎笂娓稿弽棣堜换鍔″畬鎴�", "浠诲姟淇℃伅", $"浠诲姟鍙凤細{taskId}", $"璋冨彇鍙傛暟锛歿taskInfo1.ToJsonString()},杩斿洖鍙傛暟锛歿commandResult.ToJsonString()}");
return commandResult;
}
catch (Exception ex)
{
+ Console.WriteLine("璋冨彇涓婃父鎺ュ彛閿欒锛氬師鍥狅細"+ex.Message);
commandResult.status = "error";
- commandResult.result = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ string resujos = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ commandResult.result = resujos.ToJsonString();
- WriteLog.Write_Log("鍚屾缁欎笂娓稿弽棣堜换鍔″畬鎴�", "浠诲姟淇℃伅", $"浠诲姟鍙凤細{taskId}", $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}");
+ WriteLog.Write_Log("鍚屾缁欎笂娓稿弽棣堜换鍔″畬鎴�", "浠诲姟淇℃伅", $"浠诲姟鍙凤細{taskId}", $"闇�瑕佷笂浼燱MS淇℃伅鍐呭锛歿commandResult.ToJsonString()},WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}");
return commandResult;
}
@@ -374,7 +387,9 @@
catch (Exception ex)
{
commandResult.status = "error";
- commandResult.result = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ string resujos = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ commandResult.result = resujos.ToJsonString();
+
WriteLog.Write_Log("鍚屾缁欎笂娓歌澶囨晠闅滀俊鎭�", "璁惧鏁呴殰淇℃伅", $"璁惧id锛歿devuuid}锛屽け璐�", $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}");
return commandResult;
@@ -402,7 +417,9 @@
catch (Exception ex)
{
commandResult.status = "error";
- commandResult.result = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ string resujos = $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}";
+ commandResult.result = resujos.ToJsonString();
+
WriteLog.Write_Log("鍚屾缁欎笂娓告彁鍗囧埌浣嶄俊鎭�", "淇℃伅鍐呭", $"閿欒淇℃伅", $"WCS鎺ュ彛閿欒锛屽師鍥狅細{ex.Message}");
return commandResult;
}
--
Gitblit v1.9.3