| 项目代码/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_DTO/CloseDigit5DTO.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_DTO/ConnectDTO.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_DTO/PTLCallBackDTO.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/PTLAPIController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_Server/libs/RYB_PTL_API.dll | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCSServices/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs
@@ -59,5 +59,16 @@ /// </summary> [Description("äºææç§å¢ä¸å")] PickOrderInfoRequest, connect, /// <summary> /// 䏿æç§å¢ç»æä½ä¸ /// </summary> [Description("䏿æç§å¢ç»æä½ä¸")] disconnect, /// <summary> /// 䏿æç§å¢ä¸å /// </summary> [Description("䏿æç§å¢ä¸å")] Phase1PickOrderInfoRequest, } } ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_DTO/CloseDigit5DTO.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_DTO { public class CloseDigit5DTO { /// <summary> /// æ§å¶å¨IPå°å /// </summary> public string sIP { get; set; } /// <summary> /// æç§å¢æ ç¾ID /// </summary> public string sTagID { get; set; } /// <summary> /// æ°é /// </summary> public int iNum { get; set; } /// <summary> /// 亮ï¼1 ä»£è¡¨éææ¾ç¤ºï¼2~7 代表æ ç¾éªçæ¾ç¤ºï¼ä¼ å ¥å¼è¶å¤§ï¼éªçè¶å¿« /// </summary> public int iMode { get; set; } /// <summary> /// 1ï¼çº¢è²ï¼2ï¼ç»¿è²ï¼3ï¼èè²ï¼4ï¼é»è²ï¼5ï¼ç²ï¼6ï¼éï¼7ï¼ç½ /// </summary> public int iColorIndex { get; set; } } } ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_DTO/ConnectDTO.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_DTO { public class ConnectDTO { /// <summary> /// æ§å¶å¨IPå°å /// </summary> public string sIp { get; set; } /// <summary> /// 端å£å·é»è®¤å¼6020 /// </summary> public int iPort { get; set; } = 6020; /// <summary> /// å¯éçè¶ æ¶åæ° /// </summary> public int? iTimeOut { get; set; } } } ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_DTO/PTLCallBackDTO.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_DTO { public class PTLCallBackDTO { /// <summary> /// æ§å¶å¨IPå°å /// </summary> public string sIp { get; set; } /// <summary> /// æ ç¾çIDå¼ /// </summary> public string sTagID { get; set; } /// <summary> /// æ¾ç¤ºçæ°éå¼ï¼æçæ¶ä¼ å ¥çæ°éï¼ /// </summary> public string sValue { get; set; } /// <summary> /// 模å¼+é¢è²ä»£ç ï¼ä¾å¦ "15" 表示模å¼1é¢è²5ï¼ /// ç¹æ®å¼è¯´æï¼ /// 90 - æ ç¾èªæ£æå /// 85 - æ§å¶å¨æçº¿ /// 87 - æ§å¶å¨éæ°è¿æ¥æå /// </summary> public string sKeyCode { get; set; } /// <summary> /// è´§ä½ä»£ç ï¼å¯éï¼ /// </summary> public string sLocator { get; set; } } } ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_Server/Controllers/PTLAPIController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,191 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using RYB_PTL_API; using System.Security.Policy; using WIDESEAWCS_DTO; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_QuartzJob.Repository; namespace WIDESEAWCS_Server.Controllers { [Route("PTL")] [ApiController] public class PTLAPIController : ControllerBase { private readonly ITaskService _taskService; //private bool _eventSubscribed = false; public PTLAPIController(ITaskService taskService) { _taskService = taskService; //SubscribeEvent(); } /// <summary> /// 订é PTLäºä»¶ /// </summary> //private void SubscribeEvent() //{ // if (!_eventSubscribed) // { // RYB_PTL.UserResultAvailable += RYB_PTL_UserResultAvailable; // _eventSubscribed = true; // } //} ///// <summary> ///// åæ¶è®¢é PTLäºä»¶ ///// </summary> //private void UnsubscribeEvent() //{ // if (_eventSubscribed) // { // RYB_PTL.UserResultAvailable -= RYB_PTL_UserResultAvailable; // _eventSubscribed = false; // } //} ///// <summary> ///// PTLåè°äºä»¶å¤ç ///// </summary> //private void RYB_PTL_UserResultAvailable(RYB_PTL.RtnValueStruct rs) //{ // try // { // var content = new EPLightContent(); // var pTLCallBackDTO = new PTLCallBackDTO // { // sIp = rs.Ip, // sTagID = rs.Tagid, // sValue = rs.Number, // sKeyCode = rs.KeyCode, // sLocator = rs.Locator // }; // var taskBackLight = new TaskBackLight() // { // TagNo = "B1", // TagCode = pTLCallBackDTO.sLocator, // }; // // è°ç¨æå¡å¤ç // _taskService.WMSLightBack(new List<TaskBackLight> { taskBackLight }); // } // catch (Exception ex) // { // // è®°å½æ¥å¿æå¤çå¼å¸¸ // Console.WriteLine($"å¤çPTLåè°æ¶åºé: {ex.Message}"); // } //} /// <summary> /// æç§å¢ä¸å(䏿) /// </summary> [HttpPost, Route("RYB_PTL_CloseDigit5"), AllowAnonymous] public EPLightContent RYB_PTL_CloseDigit5([FromBody] CloseDigit5DTO request) { var content = new EPLightContent(); try { bool isConnected = RYB_PTL.RYB_PTL_DspDigit5( request.sIP, request.sTagID, request.iNum, request.iMode, request.iColorIndex); } catch (Exception ex) { return content.Error(ex.Message); } return content; } /// <summary> /// åè°ä¸ä¼ /// </summary> /// <returns></returns> [HttpPost, Route("RYB_PTL_UserResultAvailable"), AllowAnonymous] public EPLightContent? RYB_PTL_UserResultAvailable([FromBody] List<PTLCallBackDTO> pTLCallBackDTOs) { EPLightContent content = new EPLightContent(); try { if (pTLCallBackDTOs == null) { return content.Error("ä¼ å ¥ä¸è½ä¸ºç©º"); } List<TaskBackLight> taskBackLights = pTLCallBackDTOs.Select(x => new TaskBackLight() { TagNo = "B1", TagCode = x.sLocator, }).ToList(); content = _taskService.WMSLightBack(taskBackLights); } catch (Exception ex) { content.Error(ex.Message); } return content; } /// <summary> /// æç§å¢åå§å(䏿) /// </summary> /// <returns></returns> [HttpPost, Route("RYB_PTL_Connect"), AllowAnonymous] public EPLightContent RYB_PTL_Connect([FromBody] ConnectDTO request) { EPLightContent content = new EPLightContent(); try { bool isConnected; if (request.iTimeOut.HasValue) { isConnected = RYB_PTL.RYB_PTL_Connect(request.sIp, request.iPort, request.iTimeOut.Value); } else { isConnected = RYB_PTL.RYB_PTL_Connect(request.sIp, request.iPort); } } catch (Exception ex) { content.Error(ex.Message); } return content; } /// <summary> /// æç§å¢ç»æä½ä¸(䏿) /// </summary> /// <returns></returns> [HttpPost, Route("RYB_PTL_Disconnect"), AllowAnonymous] public EPLightContent RYB_PTL_Disconnect() { EPLightContent content = new EPLightContent(); try { bool isDisconnected = RYB_PTL.RYB_PTL_Disconnect(); } catch (Exception ex) { content.Error(ex.Message); } return content; } ///// <summary> ///// èµæºéæ¾ ///// </summary> //public void Dispose() //{ // UnsubscribeEvent(); //} } } ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
@@ -90,4 +90,10 @@ <Folder Include="Log\" /> </ItemGroup> <ItemGroup> <Reference Include="RYB_PTL_API"> <HintPath>libs\RYB_PTL_API.dll</HintPath> </Reference> </ItemGroup> </Project> ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_Server/libs/RYB_PTL_API.dllBinary files differ
ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -20,12 +20,14 @@ using NPOI.SS.Formula.Functions; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using RYB_PTL_API; using SqlSugar; using System.Diagnostics.CodeAnalysis; using System.DirectoryServices.Protocols; using System.Linq; using System.Net.Http.Headers; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using WIDESEA_DTO.Agv; using WIDESEA_External.Model; @@ -295,6 +297,96 @@ return content; } /// <summary> /// 䏿æç§å¢ä¸å /// </summary> /// <returns></returns> public EPLightContent Phase1PickOrderInfoRequest(List<EPLightSendDTO> lightSendDTOs) { EPLightContent content = new EPLightContent(); try { string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.Phase1PickOrderInfoRequest.ToString())?.ApiAddress; if (string.IsNullOrEmpty(url)) { return content.Error("æªæ¾å°æç§å¢ä¸åæ¥å£ï¼è¯·æ£æ¥æ¥å£é ç½®"); } bool allSuccess = true; StringBuilder errorMessages = new StringBuilder(); foreach (EPLightSendDTO lightSendDTO in lightSendDTOs) { try { bool operationResult; // å¤çç¯å ç±»åè½¬æ¢ if (!int.TryParse(lightSendDTO.LIGHTTYPE, out int lightType)) { allSuccess = false; errorMessages.AppendLine($"ä½ç½® {lightSendDTO.LOCATION} é误: æ æçç¯å ç±»å '{lightSendDTO.LIGHTTYPE}'"); continue; } // å¤çå ³éç¯å è¯·æ± if (lightType == 2) { operationResult = RYB_PTL.RYB_PTL_CloseDigit5(url, lightSendDTO.LOCATION); // TODO: å ³éç¯å åè°å¤ç List<EPLightBackDTO> lightBackDTOs = new List<EPLightBackDTO>(); List<TaskBackLight> taskBackLights = lightBackDTOs.Select(x => new TaskBackLight() { TagNo = "B1", TagCode = x.LOCATION, }).ToList(); content = WMSLightBack(taskBackLights); } // å¤çæ¾ç¤ºç¯å è¯·æ± else { // å¤çç¯å é¢è²è½¬æ¢ if (!int.TryParse(lightSendDTO.LIGHTCOLOR, out int lightColor)) { allSuccess = false; errorMessages.AppendLine($"ä½ç½® {lightSendDTO.LOCATION} é误: æ æçç¯å é¢è² '{lightSendDTO.LIGHTCOLOR}'"); continue; } operationResult = RYB_PTL.RYB_PTL_DspDigit5( url, lightSendDTO.LOCATION, lightSendDTO.QUANTITY, lightType, lightColor); } if (!operationResult) { allSuccess = false; errorMessages.AppendLine($"ä½ç½® {lightSendDTO.LOCATION} æä½å¤±è´¥"); } } catch (Exception ex) { allSuccess = false; errorMessages.AppendLine($"ä½ç½® {lightSendDTO.LOCATION} å¤çå¼å¸¸: {ex.Message}"); } } return allSuccess ? content.OK("æææç§å¢ä¸åæä½æå") : content.Error(errorMessages.ToString()); } catch (Exception ex) { content.Error(ex.Message); } return content; } /// <summary> /// æç§å¢äº®ç¯ /// </summary> /// <returns></returns> @@ -303,7 +395,32 @@ WebResponseContent content = new WebResponseContent(); try { if (taskSendLight.TagNo=="B2") if (taskSendLight.TagNo == "B1") { List<EPLightSendDTO> lightSendDTOs = new List<EPLightSendDTO>() { new EPLightSendDTO { DOCNO = taskSendLight.DocNo, TASKNO= taskSendLight.TaskNo, LOCATION=taskSendLight.TagCode, QUANTITY=taskSendLight.TagQunity, LIGHTCOLOR=taskSendLight.Color switch { "Blue" => "1", "Green" => "2", "Red" => "4", _ => throw new Exception($"æªæ¾å°é¢è²å®ä¹") }, ORDERTYPE="1", LIGHTTYPE=taskSendLight.Mode.ToString(), } }; EPLightContent pLightContent = Phase1PickOrderInfoRequest(lightSendDTOs); if (pLightContent.Result != "0") throw new Exception($"{pLightContent.Msg}"); content.OK(); } else if (taskSendLight.TagNo == "B2") { List<EPLightSendDTO> lightSendDTOs = new List<EPLightSendDTO>() { @@ -332,7 +449,7 @@ { content.OK(); } } catch (Exception ex) { ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
@@ -24,4 +24,10 @@ <AdditionalDesignTimeBuildInput Remove="FakesAssemblies\**" /> </ItemGroup> <ItemGroup> <Reference Include="RYB_PTL_API"> <HintPath>..\WIDESEAWCS_Server\libs\RYB_PTL_API.dll</HintPath> </Reference> </ItemGroup> </Project>