| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | yanjinhui | ![]() |
| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | yanjinhui | ![]() |
| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | yanjinhui | ![]() |
| 5 天以前 | yanjinhui | ![]() |
| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | dengjunjie | ![]() |
| 5 天以前 | dengjunjie | ![]() |
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs
@@ -98,19 +98,19 @@ List<Dt_RGVLocationInfo> dt_RGVLocationInfos = BaseDal.QueryData(x => x.RoadwayNo == items.Key);//æ¥æ¾å½åå··éå·è´§ä½ if (item.LocationType == 1) { rGVLocationInfo = dt_RGVLocationInfos.Where(x => x.Depth < item.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()).FirstOrDefault();//å¤ææµ æ·±åº¦è´§ä½æ¯å¦æè´§ rGVLocationInfo = dt_RGVLocationInfos.Where(x => x.Depth < item.Depth && x.LocationStatus != LocationStatusEnum.Free.ObjToInt()).FirstOrDefault();//å¤ææµ æ·±åº¦è´§ä½æ¯å¦æè´§ if (rGVLocationInfo != null) break; return item; } else { rGVLocationInfo = dt_RGVLocationInfos.Where(x => x.Depth < item.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()).OrderByDescending(x => x.Depth).FirstOrDefault();//å¤ææµ æ·±åº¦è´§ä½æ¯å¦æè´§ rGVLocationInfo = dt_RGVLocationInfos.Where(x => x.Depth < item.Depth && x.LocationStatus != LocationStatusEnum.Free.ObjToInt()).OrderByDescending(x => x.Depth).FirstOrDefault();//å¤ææµ æ·±åº¦è´§ä½æ¯å¦æè´§ if (rGVLocationInfo != null) { rGVLocationInfo = dt_RGVLocationInfos.Where(x => x.Depth > rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.Free.ObjToInt()).OrderBy(x => x.Depth).FirstOrDefault(); if (rGVLocationInfo != null) { if (dt_RGVLocationInfos.Where(x => x.Depth > rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()).Any()) rGVLocationInfo = null; if (dt_RGVLocationInfos.Where(x => x.Depth > rGVLocationInfo.Depth && x.LocationStatus != LocationStatusEnum.Free.ObjToInt()).Any()) rGVLocationInfo = null; else return rGVLocationInfo; } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/WMSUpOrDownContainerDTO.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_DTO.WMS { public class WMSUpOrDownContainerDTO { /// <summary> /// è´§ä½ç¼å· /// </summary> public string locationCode { get; set; } /// <summary> /// æç®±æ¡ç /// </summary> public string containerCode { get; set; } /// <summary> /// æµå /// 1䏿¶2䏿¶ /// </summary> public int direction { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskErrorMessageService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_ITaskInfoService { public interface ITaskErrorMessageService : IService<Dt_TaskErrorMessage> { /// <summary> /// ä»å¨å±(æ°æ®åºè®¿é®) /// </summary> IRepository<Dt_TaskErrorMessage> Repository { get; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -75,14 +75,14 @@ /// </summary> /// <param name="wMSCancelTask">åæ¶ä»»å¡å®ä½ç±»</param> /// <returns></returns> WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask); WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask); /// <summary> /// ä¿®æ¹ä»»å¡ä¼å 级 /// </summary> /// <param name="updateTaskPriority"></param> /// <returns></returns> WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority); WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority); /// <summary> /// æ ¹æ®æçå·ãèµ·å§å°ååWMS请æ±ä»»å¡ @@ -210,7 +210,7 @@ /// <param name="taskNum">ä»»å¡å·</param> /// <returns>è¿åå¤çç»æ</returns> WebResponseContent TaskStatusRecovery(int taskNum); WebResponseContent ErrorTaskFeedback(Dt_Task dt_Task, bool Del); WebResponseContent ErrorTaskFeedback(Dt_Task dt_Task, bool Del = false, string ErrorCode = ""); /// <summary> /// 忻任å¡ç¶æ /// </summary> @@ -233,7 +233,7 @@ /// <param name="deviceTypeEnum"></param> /// <param name="locationStatusEnum"></param> /// <returns></returns> WebResponseContent UpdateLocationStatus(string locationCode,string palletCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum); WebResponseContent UpdateLocationStatus(string locationCode, string palletCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum); WebResponseContent ModifyWMSLayoutZone(WMSUpdateLocationArea wMSUpdateLocationArea); @@ -268,7 +268,7 @@ /// <param name="taskCode">ä»»å¡å·</param> /// <param name="containerCode">容å¨ç¼ç </param> /// <returns></returns> public WebResponseContent MaterialBoxInspection(string taskCode ,string containerCode); public WebResponseContent MaterialBoxInspection(string taskCode, string containerCode); /// <summary> /// 4Fæåæºåºå£æçå·ä¸æ¥WMS @@ -311,7 +311,12 @@ /// </summary> /// <param name="TaskCode">ä»»å¡å·</param> /// <returns></returns> WebResponseContent Hikvisiontaskscontinue(string TaskCode, string Address=null); WebResponseContent Hikvisiontaskscontinue(string TaskCode, string Address = null); /// <summary> /// å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨ /// </summary> /// <param name="wMSUpOrDown"></param> /// <returns></returns> WebResponseContent UpOrDownContainer(WMSUpOrDownContainerDTO wMSUpOrDown); } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskErrorMessage.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ using Magicodes.ExporterAndImporter.Core; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.DB.Models; namespace WIDESEAWCS_Model.Models { [SugarTable(nameof(Dt_TaskErrorMessage), "ä»»å¡å¼å¸¸ä¿¡æ¯")] public class Dt_TaskErrorMessage : BaseEntity { /// <summary> /// ä¸»é® /// </summary> [ImporterHeader(Name = "主é®")] [ExporterHeader(DisplayName = "主é®")] [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] public int TaskId { get; set; } /// <summary> /// é误代ç /// </summary> [ImporterHeader(Name = "é误代ç ")] [ExporterHeader(DisplayName = "é误代ç ")] [SugarColumn(IsNullable = false, ColumnDescription = "é误代ç ")] public int ErrorCode { get; set; } /// <summary> /// å¼å¸¸ä¿¡æ¯è±æ /// </summary> [ImporterHeader(Name = "å¼å¸¸ä¿¡æ¯è±æ")] [ExporterHeader(DisplayName = "å¼å¸¸ä¿¡æ¯è±æ")] [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "å¼å¸¸ä¿¡æ¯è±æ")] public string ErrorMessage { get; set; } /// <summary> /// å¼å¸¸ä¿¡æ¯ /// </summary> [ImporterHeader(Name = "å¼å¸¸ä¿¡æ¯")] [ExporterHeader(DisplayName = "å¼å¸¸ä¿¡æ¯")] [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "å¼å¸¸ä¿¡æ¯")] public string ExceptionMessage { get; set; } /// <summary> /// 设å¤ç±»åï¼0å¯ä¹å£«ï¼1海康ï¼2åå车 /// </summary> [ImporterHeader(Name = "设å¤ç±»å")] [ExporterHeader(DisplayName = "设å¤ç±»å")] [SugarColumn(IsNullable = false, ColumnDescription = "设å¤ç±»å")] public int DeviceType { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskErrorMessageController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_WCSServer.Controllers.Task { [Route("api/TaskErrorMessage")] [ApiController] public class TaskErrorMessageController : ApiBaseController<ITaskErrorMessageService, Dt_TaskErrorMessage> { private readonly IHttpContextAccessor _httpContextAccessor; public TaskErrorMessageController(ITaskErrorMessageService service, IHttpContextAccessor httpContextAccessor) : base(service) { _httpContextAccessor = httpContextAccessor; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs
@@ -47,6 +47,18 @@ } /// <summary> /// å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨ /// </summary> /// <param name="taskDTOs"></param> /// <returns></returns> [HttpPost, Route("UpOrDownContainer"), AllowAnonymous] public WMSReturn UpOrDownContainer([FromBody] WMSUpOrDownContainerDTO wMSUpOrDown) { WebResponseContent content = _taskService.UpOrDownContainer(wMSUpOrDown); return WMSReturnMethod.ReturnWMS(content); } /// <summary> /// åæ¶ä»»å¡ /// </summary> /// <param name="wMSCancelTask"></param> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs
@@ -212,8 +212,14 @@ Dt_StationManger? stationInfo = null; Dt_Task dt_Task = null; //å ¥åº å°ä¸æ¥¼ä¸ä¸ªç«å°çä½ç½® if (taskType == (int)TaskTypeEnum.Q3RK) if (taskType == (int)TaskTypeEnum.Q3RK)//6-1楼 { var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹ç«å°ã{taskDTO.toLocationCode}ãï¼"); var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode ) ?? throw new Exception($"æªæ¾å°{taskDTO.fromLocationCode}èµ·ç¹è´§ä½"); if (StationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{StationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); if (StationInfo.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½åç¶æä¸å¯ä»¥åºåº"); if (StationInfo.FloorNumber != "FF") throw new Exception($"ã{taskDTO.fromLocationCode}ãçæ¥¼å±åä»»å¡ç±»å楼å±ä¸å¹é "); dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -231,10 +237,15 @@ }; } //åºåº if (taskType == (int)TaskTypeEnum.Q3CK) if (taskType == (int)TaskTypeEnum.Q3CK)//1-6楼 { //stationInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); //if (stationInfo.IsOccupied != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"æª{taskDTO.toLocationCode}ç»ç¹è´§ä½"); if (StationInfo.StationStatus != (int)LocationStatusEnum.Free) throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãå½åç¶æä¸å¯ä»¥æ¾è´§"); if (StationInfo.FloorNumber != "FF") throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãçæ¥¼å±ä¸ä»»å¡ç±»å楼å±ä¸å¹é "); var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹ç«å°ã{taskDTO.fromLocationCode}ãï¼"); if (ionInfo.Remark != taskDTO.containerCode) throw new Exception($"èµ·ç¹ç«å°ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{ionInfo.Remark}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -285,21 +296,15 @@ Dt_StationInfo? stationInfo = null; try { //#region æ¯å¦éè¦å¤æå¹³åºåºä½ç¶æ //if (taskType!= (int)TaskTypeEnum.CK3F) //{ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); // if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); //} //else //{ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); //} //#endregion #region æ¯å¦éè¦å¤æå¹³åºåºä½ç¶æ var reslut= ValidateLocationForTask(taskType,taskDTO); if (!reslut.Status) { throw new Exception(reslut.Message); } #endregion Dt_Task dt_Task = new Dt_Task() Dt_Task dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), WMSTaskNum = taskDTO.taskCode, @@ -337,6 +342,13 @@ try { var stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); if (stationInfo.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸æ¯æè´§ï¼"); if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"å½ååºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡çæç®±å·ã{taskDTO.containerCode}ãä¸å¹é "); var stationInfo2 = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); if (stationInfo2.StationStatus != (int)LocationStatusEnum.Free) throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸æ¯ç©ºé²ï¼"); var dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskErrorMessageService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public class TaskErrorMessageService : ServiceBase<Dt_TaskErrorMessage, IRepository<Dt_TaskErrorMessage>>, ITaskErrorMessageService { public TaskErrorMessageService(IRepository<Dt_TaskErrorMessage> BaseDal) : base(BaseDal) { } public IRepository<Dt_TaskErrorMessage> Repository => BaseDal; } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -8,6 +8,7 @@ using System.Reflection.Metadata; using System.Text; using System.Text.Json; using System.Text.RegularExpressions; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Common.LocationEnum; @@ -176,7 +177,7 @@ BaseDal.UpdateData(task); } // //忥¼åºæåæº å ¥åº ä¹åæ¯AGV_ToExecute //è¦åæåè´§å®æç¶æTakeFinish else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.TakeFinish) { var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; @@ -283,7 +284,7 @@ case "intolift": //è¿å ¥çµæ¢¯ { //å æ¥¼å°ä¸æ¥¼çå ¥åºä»»å¡ if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01 || task.TaskType == (int)TaskTypeEnum.Q3CK) { task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt(); BaseDal.UpdateData(task); @@ -292,7 +293,7 @@ break; case "leavelift": //离å¼çµæ¢¯ { if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01|| task.TaskType == (int)TaskTypeEnum.Q3CK) { task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt(); BaseDal.UpdateData(task); @@ -391,6 +392,21 @@ TaskCompleted(task, deviceTypeEnum); } } if (Rgv.content.status == 5) { task.ExceptionMessage = Rgv.content.errorReason; var Error = _taskErrorMessageService.Repository.QueryFirst(x => x.ErrorCode == Rgv.content.errorCode && x.DeviceType == (int)deviceTypeEnum); if (Error != null) { task.ExceptionMessage = Error.ExceptionMessage; MatchCollection matches = Regex.Matches(Rgv.content.errorReason, @"\(([^)]+)\)"); if (matches.Count > 0) task.ExceptionMessage = ReplacePlaceholders(Rgv.content.errorReason, Error.ExceptionMessage); ErrorTaskFeedback(task, true, Error.ErrorCode.ToString()); } else ErrorTaskFeedback(task, true); } } } } @@ -405,6 +421,30 @@ _trackloginfoService.AddTrackLog(TaskDTO, content, $"{deviceName}ä»»å¡ç¶æåé¦", "", ""); } return content; } #endregion #region å¼å¸¸ä¿¡æ¯è½¬æ¢ /// <summary> /// å¼å¸¸ä¿¡æ¯()å å®¹è½¬æ¢ /// </summary> /// <param name="source"></param> /// <param name="targetTemplate"></param> /// <returns></returns> public string ReplacePlaceholders(string source, string targetTemplate) { // æåæºå符串ä¸çæææ¬å·å¼ var values = Regex.Matches(source, @"\(([^)]+)\)") .Cast<Match>() .Select(m => m.Groups[1].Value) .ToList(); // æ¿æ¢ç®æ 模æ¿ä¸çææ (%v) int idx = 0; string result = Regex.Replace(targetTemplate, @"\(\%v\)", _ => idx < values.Count ? values[idx++] : ""); return result; } #endregion @@ -597,38 +637,22 @@ dt_RGVLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); _rGVLocationInfoService.Repository.UpdateData(dt_RGVLocationInfo); } } else//å¹³åºåºä½ { } return WebResponseContent.Instance.OK(); } catch (Exception ex) { throw new Exception(ex.Message); } } #endregion #region æ´æ°ä¸æ¥¼ç«å°ç¶æ public WebResponseContent UpdateStandStatus(Dt_Task task, string stationCode, LocationStatusEnum locationStatusEnum) { try { Dt_StationManger? stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == task.TargetAddress); //stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); if (stationManger != null) { if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode); if (stationManger != null) { stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· { stationManger.Remark = ""; stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); } else { stationManger.Remark = palletCode; stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); } _stationMangerService.UpdateData(stationManger); } else { stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); } _stationMangerService.UpdateData(stationManger); } return WebResponseContent.Instance.OK(); } @@ -640,7 +664,7 @@ #endregion #region 䏿¥WMS public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = true) public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = false) { WebResponseContent content = new WebResponseContent(); WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback(); @@ -683,7 +707,7 @@ } #endregion #region 失败任å¡ä¸æ¥WMSå¹¶å é¤ä»»å¡ public WebResponseContent ErrorTaskFeedback(Dt_Task dt_Task, bool Del) public WebResponseContent ErrorTaskFeedback(Dt_Task dt_Task, bool Del = false, string ErrorCode = "") { WebResponseContent content = new WebResponseContent(); WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback(); @@ -699,7 +723,7 @@ boundCompleteFeedback.fromStationCode = dt_Task.SourceAddress; boundCompleteFeedback.toLocationCode = dt_Task.TargetAddress; boundCompleteFeedback.status = 3; boundCompleteFeedback.custStatus = ""; boundCompleteFeedback.custStatus = ErrorCode; boundCompleteFeedback.memo = dt_Task.ExceptionMessage; string response = HttpHelper.Post(apiInfo.ApiAddress, boundCompleteFeedback.Serialize()); agvContent = response.DeserializeObject<WMSReturn>(); @@ -720,15 +744,12 @@ finally { _trackloginfoService.AddTrackLog(boundCompleteFeedback, content, "åºå ¥åºä»»å¡ç¶æåé¦WMS", "", ""); if (agvContent != null && agvContent.code == 200 && Del) BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å é¤); if (agvContent != null && agvContent.code == 200 && Del) BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å é¤); else BaseDal.UpdateData(dt_Task); } return content; } #endregion } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -57,6 +57,7 @@ private readonly IApiInfoService _apiInfoService; private readonly IStationMangerService _stationMangerService; private readonly IStationInfoService _stationInfo; private readonly ITaskErrorMessageService _taskErrorMessageService; private readonly IMapper _mapper; private Dictionary<string, OrderByType> _taskOrderBy = new() @@ -76,7 +77,7 @@ /// </summary> public IRepository<Dt_Task> Repository => BaseDal; public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService, IApiInfoService apiInfoService, ITrackloginfoService trackloginfoService, IStationMangerService stationMangerService, IStationInfoService stationInfo) : base(BaseDal) public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService, IApiInfoService apiInfoService, ITrackloginfoService trackloginfoService, IStationMangerService stationMangerService, IStationInfoService stationInfo, ITaskErrorMessageService taskErrorMessageService) : base(BaseDal) { _routerService = routerService; _taskExecuteDetailService = taskExecuteDetailService; @@ -89,6 +90,7 @@ _trackloginfoService = trackloginfoService; _stationMangerService = stationMangerService; _stationInfo = stationInfo; _taskErrorMessageService = taskErrorMessageService; } public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs) { @@ -189,9 +191,9 @@ content = HKF01Transport(task, item.taskType); break; case (int)TaskTypeEnum.F04: case (int)TaskTypeEnum.F03: case (int)TaskTypeEnum.F02: case (int)TaskTypeEnum.RK3F: case (int)TaskTypeEnum.F02: case (int)TaskTypeEnum.F03: case (int)TaskTypeEnum.CK3F: content = CJCarryTaske(task, item.taskType); objects.Add(content.Data); @@ -1237,11 +1239,11 @@ public WebResponseContent InboundElevatorExit(string LocationCode, string containerCode) { WebResponseContent content = new WebResponseContent(); inboundElevatorExitDTO inboundElevator=new inboundElevatorExitDTO(); inboundElevatorExitDTO inboundElevator = new inboundElevatorExitDTO(); try { Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(inboundElevatorExitDTO)) ?? throw new Exception("æªæ¾å°4Fæåæºåºå£æçå·ä¸æ¥WMSæ¥å£é 置信æ¯ï¼è¯·æ£æ¥æ¥å£é ç½®"); inboundElevator.containerCode= containerCode; inboundElevator.containerCode = containerCode; inboundElevator.toLocationCode = LocationCode; string response = HttpHelper.Post(apiInfo.ApiAddress, inboundElevator.Serialize()); content.OK(data: response); @@ -1278,6 +1280,7 @@ string dataJson = wMSReturn.result.ToString(); Exists? exists = JsonConvert.DeserializeObject<Exists>(dataJson); if (exists == null) throw new Exception($"WMSè¿åç»æçresult转æ¢å¤±è´¥"); if (exists.taskExists) return WebResponseContent.Instance.OK(); return WebResponseContent.Instance.OK(exists.errorAreaCode); } catch (Exception ex) @@ -1299,6 +1302,41 @@ throw new NotImplementedException(); } /// <summary> /// å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨ /// </summary> /// <param name="wMSUpOrDown"></param> /// <returns></returns> public WebResponseContent UpOrDownContainer(WMSUpOrDownContainerDTO wMSUpOrDown) { WebResponseContent content = new WebResponseContent(); try { Dt_StationInfo stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == wMSUpOrDown.locationCode) ?? throw new Exception($"æªæ¾å°è´§ä½ã{wMSUpOrDown.locationCode}ãä¿¡æ¯"); if (wMSUpOrDown.direction == 1) { stationInfo.StationStatus = LocationStatusEnum.InStock.ObjToInt(); stationInfo.PalletCode = wMSUpOrDown.containerCode; } else { stationInfo.StationStatus = LocationStatusEnum.Free.ObjToInt(); stationInfo.PalletCode = ""; } _stationInfo.UpdateData(stationInfo); content.OK(); } catch (Exception ex) { content.Error(ex.Message); } finally { _trackloginfoService.AddTrackLog(wMSUpOrDown, content, "å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨", "", ""); } return content; } /// <summary> /// 容卿µå¨è¯·æ± /// </summary> /// <param name="wMSContainerFlow"></param> @@ -1306,6 +1344,7 @@ /// <exception cref="NotImplementedException"></exception> public WebResponseContent ContainerRequest(WMSContainerFlow wMSContainerFlow) { WebResponseContent content = new WebResponseContent(); try { Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == wMSContainerFlow.slotCode) ?? throw new Exception($"æªæ¾å°ç«å°ã{wMSContainerFlow.slotCode}ãä¿¡æ¯"); @@ -1313,20 +1352,26 @@ if (wMSContainerFlow.direction == "200") { stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); stationManger.Remark = ""; FOURBOToccupyStation fOURBOToccupyStation = new FOURBOToccupyStation() { stationCode = wMSContainerFlow.slotCode, }; string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize()); FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); content.OK(data: fOURBOTReturn); if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); _stationMangerService.UpdateData(stationManger); } return WebResponseContent.Instance.OK(); return content.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); return content.Error(ex.Message); } finally { _trackloginfoService.AddTrackLog(wMSContainerFlow, content, "容卿µå¨è¯·æ±", "", ""); } } /// <summary> @@ -1379,11 +1424,21 @@ //task.TaskState = (int)TaskStatusEnum.Execut; //BaseDal.UpdateData(task); #endregion #region 䏿¶ä¸éè¦å°ç«å°ç¶ææ¹ä¸ºå ç¨ ç»å®å®¹å¨ç¼ç stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); stationManger.Remark = iQC.ContainerCode; _stationMangerService.UpdateData(stationManger); #endregion return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } finally { _trackloginfoService.AddTrackLog(iQC, content, "IQCè´¨æ£ç»æåé¦", "", ""); } } @@ -1395,6 +1450,7 @@ /// <exception cref="NotImplementedException"></exception> public WebResponseContent multiSetNodeStatus(FOURBOTStorageStatusNotify fOURBOTStorageStatusNotify) { WebResponseContent content = new WebResponseContent(); try { var Agvlocation = _rGVLocationInfoService.Repository.QueryData(x => fOURBOTStorageStatusNotify.storageCode.Contains(x.LocationCode)); @@ -1403,12 +1459,16 @@ item.EnableStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable); } _rGVLocationInfoService.UpdateData(Agvlocation); return WebResponseContent.Instance.OK(); return content.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } finally { _trackloginfoService.AddTrackLog(fOURBOTStorageStatusNotify, content, "æ¹éæ´æ°å¨ä½ç¶æ", "", ""); } } @@ -1438,6 +1498,71 @@ } } /// <summary> /// æ ¡éªä»»å¡ç¸å ³çåºä½ç¶æåç»å®å ³ç³» /// </summary> /// <param name="taskType">ä»»å¡ç±»å</param> /// <param name="taskDTO">ä»»å¡DTO</param> /// <returns>è¿åèµ·ç¹åºä½åç»ç¹åºä½ä¿¡æ¯</returns> /// <exception cref="Exception">æ ¡éªå¤±è´¥æ¶æåºå¼å¸¸</exception> private WebResponseContent ValidateLocationForTask(int taskType, TaskDTO taskDTO) { WebResponseContent content = new WebResponseContent(); try { #region // å ¥åºç±»ä»»å¡ï¼éè¦æ ¡éªç»ç¹åºä½ï¼ if (taskType == (int)TaskTypeEnum.CK3F || taskType == (int)TaskTypeEnum.F03) { var toStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); if (toStation.StationStatus != (int)LocationStatusEnum.Free) throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãåºä½ç¶æä¸å¯å ¥åºï¼"); } // åºåºç±»ä»»å¡ï¼éè¦æ ¡éªèµ·ç¹åºä½ï¼ else if (taskType == (int)TaskTypeEnum.RK3F || taskType == (int)TaskTypeEnum.F04) { var fromStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); if (fromStation.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); if (fromStation.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{fromStation.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); } // ç§»åºç±»ä»»å¡ï¼éè¦åæ¶æ ¡éªèµ·ç¹åç»ç¹ï¼ else if (taskType == (int)TaskTypeEnum.F02) { // æ ¡éªç»ç¹åºä½ var toStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); if (toStation.StationStatus != (int)LocationStatusEnum.Free) throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãåºä½ç¶æä¸å¯å ¥åºï¼"); // æ ¡éªèµ·ç¹åºä½ var fromStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); if (fromStation.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); if (fromStation.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{fromStation.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); } #endregion return content.OK(); } catch (Exception ex) { return content.Error(ex.Message); } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -207,6 +207,7 @@ } else { RK3FTask.CurrentAddress = RK3FTask.TargetAddress; if (!string.IsNullOrEmpty(Verification.Message)) RK3FTask.TargetAddress = Verification.Message; //妿æç®±æ£éªæåå°±åå ¥è¯»ç å¨çå¼ var result = _taskService.Hikvisiontaskscontinue(RK3FTask.WMSTaskNum, RK3FTask.TargetAddress); ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -183,9 +183,9 @@ }; requestData = request; // ä¿åè¯·æ±æ°æ®ç¨äºæ¥å¿ //content.candidatePodIDs = tasks.Select(x => x.PalletCode).ToList(); string response = HttpHelper.Post("http://127.0.0.1:4523/m2/6165241-5857331-default/440906899?apifoxApiId=440906899", request.Serialize()); //string response = HttpHelper.Post("http://127.0.0.1:4523/m2/6165241-5857331-default/440906899?apifoxApiId=440906899", request.Serialize()); //string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); content.OK(data: fOURBOTReturn); if (fOURBOTReturn.returnCode == 0)