| | |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO; |
| | | using WIDESEAWCS_DTO.RGV.FOURBOT; |
| | |
| | | { |
| | | public partial class TaskJob |
| | | { |
| | | |
| | | #region ä¸ååå车å
¥åºä»»å¡ |
| | | /// <summary> |
| | | /// ä¸ååå车æ°å»ºå
¥åºä»»å¡ |
| | | /// </summary> |
| | | /// <param name="tasks"></param> |
| | | public void SendRGVInTask(List<Dt_Task> tasks) |
| | | public void SendRGVNewInTask(List<Dt_Task> tasks) |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | foreach (var task in tasks) |
| | | { |
| | | fOURBOTnewMovePodTask = new() |
| | | { |
| | | priority = task.Grade, |
| | | podID = task.PalletCode, |
| | | desExt = new |
| | | { |
| | | unload = 0//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | }, |
| | | desStationCodes = task.SourceAddress, |
| | | desType = 5 |
| | | }; |
| | | fOURBOTnewMovePodTask.requestID += task.TaskId; |
| | | try |
| | | { |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | |
| | | string dataJson = fOURBOTReturn.data.ToString(); |
| | | FOURBOTnewMovePodTaskResponseData? fOURBO = JsonConvert.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(dataJson); |
| | | if (fOURBO == null || fOURBO.taskID == 0) |
| | | { |
| | | throw new Exception($"æªè·åå°åå车è¿åçä»»å¡IDï¼è¿åæ°æ®ï¼{response}"); |
| | | } |
| | | //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | task.RGVTaskId = fOURBO.taskID; |
| | | task.ExceptionMessage = ""; |
| | | task.TaskState = (int)TaskStatusEnum.Execut; |
| | | task.Dispatchertime = DateTime.Now; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | task.ExceptionMessage = ex.Message; |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸ååå车æ°å»ºå
¥åºä»»å¡", "", ""); |
| | | } |
| | | } |
| | | var uptasks = tasks.Where(task => string.IsNullOrEmpty(task.ExceptionMessage)).ToList(); |
| | | if (uptasks.Count() > 0) _taskService.UpdateData(uptasks); |
| | | var errortasks = tasks.Where(task => !string.IsNullOrEmpty(task.ExceptionMessage)).ToList(); |
| | | if (errortasks.Count() > 0) |
| | | { |
| | | foreach (var item in errortasks) |
| | | { |
| | | Thread.Sleep(500); |
| | | _taskService.ErrorTaskFeedback(item, true); |
| | | } |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | #region |
| | | /// <summary> |
| | | /// ä¸ååå车å¤å½¢æ£æµä»»å¡ |
| | | /// </summary> |
| | | /// <param name="tasks"></param> |
| | | public void SendRGVCheckShapeTask(List<Dt_Task> tasks) |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | |
| | | { |
| | | fOURBOTnewMovePodTask.priority = item.Grade; |
| | | fOURBOTnewMovePodTask.podID = item.PalletCode; |
| | | fOURBOTnewMovePodTask.destination = item.NextAddress; |
| | | //fOURBOTnewMovePodTask.destination = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desExt = new |
| | | { |
| | | unload = 0//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 2; |
| | | fOURBOTnewMovePodTask.taskExt = new |
| | | { |
| | | keepRobot = 1, |
| | | keepRobotTimeout = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.requestID += item.TaskId; |
| | | fOURBOTnewMovePodTask.desType = 1; |
| | | fOURBOTnewMovePodTask.desNodeID = item.NextAddress; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | string dataJson = fOURBOTReturn.data.ToString(); |
| | |
| | | } |
| | | //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | item.Dispatchertime = DateTime.Now; |
| | | item.TaskState = (int)TaskStatusEnum.TakeFinish; |
| | | } |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸ååå车å¤å½¢æ£æµä»»å¡", "", ""); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | /// <param name="tasks"></param> |
| | | public void IsMoveTask(List<Dt_Task> tasks) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GetBlockPodContentDto)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | List<Dt_Task> dt_Tasks = new List<Dt_Task>(); |
| | | var PalletCodes = tasks.Select(x => x.PalletCode).ToList(); |
| | | //GetBlockPodContentDto content = new GetBlockPodContentDto(); |
| | | var request = new GetBlockPodContentListDto |
| | | { |
| | | content = new List<GetBlockPodContentDto> |
| | |
| | | } |
| | | } |
| | | }; |
| | | //content.candidatePodIDs = tasks.Select(x => x.PalletCode).ToList(); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | //string response = HttpHelper.Post("http://127.0.0.1:4523/m2/6165241-5857331-default/440906899?apifoxApiId=440906899", request.Serialize()); |
| | | content = _apiInfoService.PostInterfaceRequest(nameof(GetBlockPodContentDto), request.Serialize(), "æ¹éè·åé»ç¢æçå
³ç³»"); |
| | | if (!content.Status) |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | item.ExceptionMessage = content.Message; |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | return; |
| | | } |
| | | FOURBOTReturn fOURBOTReturn = content.Data as FOURBOTReturn; |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | ReturnBlockPodResultDto getBlockPod = fOURBOTReturn.data as ReturnBlockPodResultDto ?? throw new Exception("æªè·åå°é»ç¢æçå
³ç³»æ°æ®"); |
| | | //ReturnBlockPodResultDto getBlockPod = fOURBOTReturn.data as ReturnBlockPodResultDto ?? throw new Exception("æªè·åå°é»ç¢æçå
³ç³»æ°æ®"); |
| | | var dataJson = fOURBOTReturn.data.ToString(); |
| | | if (string.IsNullOrEmpty(dataJson)) |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | item.ExceptionMessage = "è·åé»ç¢æçå
³ç³»å¤±è´¥ï¼"; |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | return; |
| | | } |
| | | ReturnBlockPodResultDto? getBlockPod = JsonConvert.DeserializeObject<ReturnBlockPodResultDto>(dataJson); |
| | | if (getBlockPod == null) |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | item.ExceptionMessage = "é»ç¢æçå
³ç³»æ°æ®è½¬æ¢å®ä½å¤±è´¥ï¼"; |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | return; |
| | | } |
| | | if (getBlockPod.Result.Count == 0) |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | item.ExceptionMessage = "æªè·åå°é»ç¢æçå
³ç³»æ°æ®ï¼"; |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | return; |
| | | } |
| | | foreach (var Result in getBlockPod.Result) |
| | | { |
| | | foreach (var item in Result.outPods) |
| | | { |
| | | var task = tasks.First(x => x.PalletCode == item.outPod); |
| | | if (item.blockPods.Count > 0) |
| | | if (item.blockPods != null && item.blockPods.Count > 0) |
| | | item.blockPods = item.blockPods.Except(PalletCodes).ToList(); |
| | | if (item.blockPods != null && item.blockPods.Count > 0) |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | #region 夿é»ç¢ææ¯å¦ä¸ºåºåºä»»å¡ |
| | | //var except = item.blockPods.Except(PalletCodes).ToList(); |
| | | #endregion |
| | | var responseContent = AddMoveTask(item.blockPods, task);//æ·»å ç§»åºä»»å¡ |
| | | if (!responseContent.Status) task.ExceptionMessage = responseContent.Message; |
| | | else |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | } |
| | | dt_Tasks.Add(task); |
| | | AddMoveTask(item.blockPods); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | _taskService.UpdateData(dt_Tasks); |
| | | content.OK(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | //_trackloginfoService.AddTrackLog(requestData, content, "å¤çåºåºä»»å¡æ¯å¦éè¦ç§»åº", "", ""); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | public void SendCheckShapeingOkTask(List<Dt_Task> tasks) |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | List<Dt_RGVLocationInfo> rGVLocationInfos = new List<Dt_RGVLocationInfo>(); |
| | | List<Dt_StationManger> stationMangers = new List<Dt_StationManger>(); |
| | | foreach (var item in tasks) |
| | | var tasksToUpdate = new List<Dt_Task>(); |
| | | var locationsToUpdate = new List<Dt_RGVLocationInfo>(); |
| | | var stationsToUpdate = new List<Dt_StationManger>(); |
| | | #region ä»»å¡ä¸å |
| | | var item = tasks.FirstOrDefault(); |
| | | if (item != null) |
| | | { |
| | | #region è·åè´§ä½ |
| | | var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway); |
| | | if (rGVLocationInfo == null) |
| | | try |
| | | { |
| | | item.ExceptionMessage = $"æªæ¾å°ç»ç¹åºåºã{item.Roadway}ãå¯ç¨ç©ºè´§ä½ï¼"; |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | item.CurrentAddress = item.NextAddress; |
| | | item.NextAddress = rGVLocationInfo.LocationCode; |
| | | item.Roadway = rGVLocationInfo.RoadwayNo; |
| | | fOURBOTnewMovePodTask.priority = item.Grade; |
| | | fOURBOTnewMovePodTask.podID = item.PalletCode; |
| | | fOURBOTnewMovePodTask.destination = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desExt = new |
| | | #region è·åè´§ä½ |
| | | var rGVLocationInfo = _rGVLocationInfoService.GetInFreeLocationInfo(item.Roadway.ObjToInt()); |
| | | if (rGVLocationInfo == null) |
| | | { |
| | | unload = 1//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 2; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | item.ExceptionMessage = $"æªæ¾å°ç»ç¹åºåºã{item.Roadway}ãå¯ç¨ç©ºè´§ä½ï¼"; |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Puting; |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt(); |
| | | rGVLocationInfos.Add(rGVLocationInfo); |
| | | #region éæ¾å
¥åºç«å° |
| | | Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | stationMangers.Add(stationManger); |
| | | #endregion |
| | | fOURBOTnewMovePodTask = new FOURBOTnewMovePodTask |
| | | { |
| | | priority = item.Grade, |
| | | podID = item.PalletCode, |
| | | desStorageID = rGVLocationInfo.LocationCode, |
| | | //destination = rGVLocationInfo.LocationCode, |
| | | desExt = new { unload = 1 }, // æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | desType = 2 |
| | | }; |
| | | fOURBOTnewMovePodTask.taskExt = new |
| | | { |
| | | autoToRest = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; |
| | | item.CurrentAddress = item.NextAddress; |
| | | item.NextAddress = rGVLocationInfo.LocationCode; |
| | | item.TargetAddress = rGVLocationInfo.LocationCode; |
| | | item.Roadway = rGVLocationInfo.RoadwayNo; |
| | | |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | var fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | var data = fOURBOTReturn.data.ToString(); |
| | | var fOURBO = data.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(); |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Puting; |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt(); |
| | | item.Dispatchertime = DateTime.Now; |
| | | locationsToUpdate.Add(rGVLocationInfo); |
| | | |
| | | #region éæ¾å
¥åºç«å° |
| | | var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | if (stationManger != null) |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | stationsToUpdate.Add(stationManger); |
| | | } |
| | | content.OK(); |
| | | #endregion |
| | | } |
| | | else |
| | | { |
| | | item.ExceptionMessage = $"åå车æ¥å£è¿åé误ï¼{fOURBOTReturn.returnMsg}"; |
| | | // è®°å½å¤±è´¥çä»»å¡ |
| | | content.Error($"åå车æ¥å£è¿åé误ï¼{fOURBOTReturn.returnMsg}"); |
| | | } |
| | | tasksToUpdate.Add(item); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | item.ExceptionMessage = $"å¤çä»»å¡å¼å¸¸ï¼{ex.Message}"; |
| | | //WriteError($"{nameof(TaskJob)}-{item.TaskId}", ex.Message, ex); |
| | | content.Error($"åå车æ¥å£è¿åé误ï¼{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | |
| | | } |
| | | } |
| | | _taskService.Db.Ado.BeginTran(); |
| | | _taskService.UpdateData(tasks); |
| | | _rGVLocationInfoService.UpdateData(rGVLocationInfos); |
| | | _stationMangerService.UpdateData(stationMangers); |
| | | _taskService.Db.Ado.CommitTran(); |
| | | #region MyRegion |
| | | //foreach (var item in tasks) |
| | | //{ |
| | | // try |
| | | // { |
| | | // #region è·åè´§ä½ |
| | | // var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway); |
| | | // if (rGVLocationInfo == null) |
| | | // { |
| | | // item.ExceptionMessage = $"æªæ¾å°ç»ç¹åºåºã{item.Roadway}ãå¯ç¨ç©ºè´§ä½ï¼"; |
| | | // continue; |
| | | // } |
| | | // #endregion |
| | | // fOURBOTnewMovePodTask = new FOURBOTnewMovePodTask |
| | | // { |
| | | // priority = item.Grade, |
| | | // podID = item.PalletCode, |
| | | // desStorageID = rGVLocationInfo.LocationCode, |
| | | // //destination = rGVLocationInfo.LocationCode, |
| | | // desExt = new { unload = 1 }, // æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | // desType = 2 |
| | | // }; |
| | | // fOURBOTnewMovePodTask.taskExt = new |
| | | // { |
| | | // autoToRest = 1 |
| | | // }; |
| | | // item.CurrentAddress = item.NextAddress; |
| | | // item.NextAddress = rGVLocationInfo.LocationCode; |
| | | // item.TargetAddress = rGVLocationInfo.LocationCode; |
| | | // item.Roadway = rGVLocationInfo.RoadwayNo; |
| | | |
| | | // string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | // var fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | // content.Data = fOURBOTReturn; |
| | | // if (fOURBOTReturn.returnCode == 0) |
| | | // { |
| | | // var data = fOURBOTReturn.data.ToString(); |
| | | // var fOURBO = data.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(); |
| | | // item.RGVTaskId = fOURBO.taskID; |
| | | // item.TaskState = (int)TaskStatusEnum.Puting; |
| | | |
| | | // rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt(); |
| | | // locationsToUpdate.Add(rGVLocationInfo); |
| | | |
| | | // #region éæ¾å
¥åºç«å° |
| | | // var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | // if (stationManger != null) |
| | | // { |
| | | // stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | // stationsToUpdate.Add(stationManger); |
| | | // } |
| | | // content.OK(); |
| | | // #endregion |
| | | // } |
| | | // else |
| | | // { |
| | | // item.ExceptionMessage = $"åå车æ¥å£è¿åé误ï¼{fOURBOTReturn.returnMsg}"; |
| | | // // è®°å½å¤±è´¥çä»»å¡ |
| | | // content.Error($"åå车æ¥å£è¿åé误ï¼{fOURBOTReturn.returnMsg}"); |
| | | // } |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // item.ExceptionMessage = $"å¤çä»»å¡å¼å¸¸ï¼{ex.Message}"; |
| | | // //WriteError($"{nameof(TaskJob)}-{item.TaskId}", ex.Message, ex); |
| | | // content.Error($"åå车æ¥å£è¿åé误ï¼{ex.Message}"); |
| | | // } |
| | | // tasksToUpdate.Add(item); |
| | | //} |
| | | #endregion |
| | | #endregion |
| | | #region æ´æ°æ°æ® |
| | | // 妿æéè¦æ´æ°çæ°æ®ï¼ææ§è¡äºå¡ |
| | | if (tasksToUpdate.Any() || locationsToUpdate.Any() || stationsToUpdate.Any()) |
| | | { |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | if (tasksToUpdate.Any()) |
| | | _taskService.UpdateData(tasksToUpdate); |
| | | if (locationsToUpdate.Any()) |
| | | _rGVLocationInfoService.UpdateData(locationsToUpdate); |
| | | if (stationsToUpdate.Any()) |
| | | _stationMangerService.UpdateData(stationsToUpdate); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error($"ä¸åå¤å½¢æ£æµä»»å¡å¤±è´¥{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸åå¤å½¢æ£æµæåä»»å¡", "", ""); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | public void SendCheckShapeingNGTask(List<Dt_Task> tasks) |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | |
| | | { |
| | | Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | item.CurrentAddress = item.NextAddress; |
| | | item.NextAddress = stationManger.RGVStationCode; |
| | | item.NextAddress = stationManger.StationCode; |
| | | fOURBOTnewMovePodTask.priority = item.Grade; |
| | | fOURBOTnewMovePodTask.podID = item.PalletCode; |
| | | fOURBOTnewMovePodTask.destination = item.NextAddress; |
| | | //fOURBOTnewMovePodTask.desNodeID = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desStationCodes = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desExt = new |
| | | { |
| | | unload = 1//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 2; |
| | | fOURBOTnewMovePodTask.taskExt = new |
| | | { |
| | | autoToRest = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 5; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.Data = fOURBOTReturn; |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | string dataJson = fOURBOTReturn.data.ToString(); |
| | | FOURBOTnewMovePodTaskResponseData? fOURBO = JsonConvert.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(dataJson); |
| | | content.OK(data: fOURBO); |
| | | if (fOURBO == null || fOURBO.taskID == 0) |
| | | { |
| | | throw new Exception($"æªè·åå°åå车è¿åçä»»å¡IDï¼è¿åæ°æ®ï¼{response}"); |
| | | } |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Puting; |
| | | item.Dispatchertime = DateTime.Now; |
| | | } |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸åå¤å½¢æ£æµå¤±è´¥ä»»å¡", "", ""); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region æ·»å ç§»åºä»»å¡ |
| | | public void AddMoveTask(List<string> blockPods) |
| | | public WebResponseContent AddMoveTask(List<string> blockPods, Dt_Task task) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_RGVLocationInfo> _UpRGVLocationInfos = new List<Dt_RGVLocationInfo>(); |
| | | List<Dt_RGVLocationInfo> rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => blockPods.Contains(x.PalletCode)); |
| | | var FreeLocationInfos = _rGVLocationInfoService.GetFreeLocationInfos(); |
| | | if (FreeLocationInfos.Count < 1) throw new Exception($"æååºå建移åºä»»å¡æ å¯ç¨ç©ºè´§ä½"); |
| | | foreach (var item in rGVLocationInfos) |
| | | var Items = _rGVLocationInfoService.GetMoveFreeLocationInfo(rGVLocationInfos); |
| | | |
| | | List<Dt_Task> tasks = Items.Item1; |
| | | List<Dt_RGVLocationInfo> _UpRGVLocationInfos = Items.Item2; |
| | | if (tasks.Count < blockPods.Count) throw new Exception("å¯ç§»åºç©ºè´§ä½å°äºéç§»åºæçæ°é"); |
| | | |
| | | tasks.ForEach(x => |
| | | { |
| | | Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault(); |
| | | rGVLocationInfo ??= FreeLocationInfos.First(); |
| | | Dt_Task dt_Task = new() |
| | | { |
| | | TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | //WMSTaskNum = taskDTO.taskCode, |
| | | //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Grade = 1, |
| | | PalletCode = item.PalletCode, |
| | | Roadway = item.RoadwayNo, |
| | | TaskState = TaskStatusEnum.RGV_NewMoveTask.ObjToInt(), |
| | | TaskType = TaskTypeEnum.CPMoveInventory.ObjToInt(), |
| | | SourceAddress = item.LocationCode, |
| | | CurrentAddress = item.LocationCode, |
| | | NextAddress = rGVLocationInfo.LocationCode, |
| | | TargetAddress = rGVLocationInfo.LocationCode, |
| | | Creater = "WCS", |
| | | }; |
| | | tasks.Add(dt_Task); |
| | | item.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | _UpRGVLocationInfos.Add(rGVLocationInfo); |
| | | FreeLocationInfos.Remove(rGVLocationInfo); |
| | | x.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)); |
| | | //x.WMSTaskNum = task.WMSTaskNum; |
| | | }); |
| | | rGVLocationInfos.ForEach(x => |
| | | { |
| | | x.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | }); |
| | | _UpRGVLocationInfos.ForEach(x => |
| | | { |
| | | x.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | }); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | _rGVLocationInfoService.UpdateData(rGVLocationInfos); |
| | | _rGVLocationInfoService.UpdateData(_UpRGVLocationInfos); |
| | | _taskService.AddData(tasks); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | _rGVLocationInfoService.UpdateData(rGVLocationInfos); |
| | | _rGVLocationInfoService.UpdateData(_UpRGVLocationInfos); |
| | | _taskService.AddData(tasks); |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | #endregion |
| | | |
| | | #region ä¸ååå车æ¹éç§»åºä»»å¡ |
| | | public void SendMoveTasks(List<Dt_Task> tasks) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<Dt_Task> dt_Tasks = new List<Dt_Task>(); |
| | | MoveBlockPodContentDto moveBlock = new MoveBlockPodContentDto(); |
| | | try |
| | | { |
| | | List<Dt_Task> dt_Tasks = new List<Dt_Task>(); |
| | | List<MoveBlockPodContentDto> moveBlocks = new List<MoveBlockPodContentDto>(); |
| | | |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(MoveBlockPodContentDto)) ?? throw new Exception("æªæ¾å°åå车æ¹éæ¬è¿é»ç¢æä»»å¡æ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | foreach (var item in tasks) |
| | | { |
| | | MoveBlockPodContentDto moveBlock = new MoveBlockPodContentDto() |
| | | MoveBlockPodContentDtoInfo moveBlockInfo = new MoveBlockPodContentDtoInfo() |
| | | { |
| | | podID = item.PalletCode, |
| | | des = item.TargetAddress |
| | | }; |
| | | moveBlocks.Add(moveBlock); |
| | | moveBlock.content.Add(moveBlockInfo); |
| | | } |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, moveBlocks.Serialize()); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, moveBlock.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | MoveBlockPodsDataDto moveBlockPodsData = fOURBOTReturn.data as MoveBlockPodsDataDto ?? throw new Exception("æªè·åå°åå车æ¹éæ¬è¿é»ç¢æè¿åçä»»å¡ID"); |
| | | string dataJson = fOURBOTReturn.data.ToString(); |
| | | //MoveBlockPodsDataDto moveBlockPodsData = fOURBOTReturn.data as MoveBlockPodsDataDto ?? throw new Exception("æªè·åå°åå车æ¹éæ¬è¿é»ç¢æè¿åçä»»å¡ID"); |
| | | MoveBlockPodsDataDto? moveBlockPodsData = JsonConvert.DeserializeObject<MoveBlockPodsDataDto>(dataJson); |
| | | if (moveBlockPodsData == null || moveBlockPodsData.succList.Count == 0) |
| | | { |
| | | throw new Exception($"æªè·åå°åå车è¿åçä»»å¡IDï¼è¿åæ°æ®ï¼{response}"); |
| | | } |
| | | |
| | | foreach (var item in moveBlockPodsData.succList) |
| | | { |
| | | if (item.taskID == 0) |
| | | continue; // è·³è¿æ æçä»»å¡ID |
| | | var task = tasks.First(x => x.PalletCode == item.podID); |
| | | task.RGVTaskId = item.taskID; |
| | | task.TaskState = TaskStatusEnum.RGV_MoveTaskSend.ObjToInt(); |
| | | task.Dispatchertime = DateTime.Now; |
| | | dt_Tasks.Add(task); |
| | | } |
| | | _taskService.UpdateData(dt_Tasks); |
| | | content.OK(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(moveBlock, content, "ä¸ååå车æ¹éç§»åºä»»å¡", "", ""); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | if (_taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory) == null) |
| | | var takes = _taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory && (x.TaskState == (int)TaskStatusEnum.RGV_NewMoveTask || x.TaskState == (int)TaskStatusEnum.RGV_MoveTaskSend)); |
| | | if (takes == null) |
| | | { |
| | | item.TaskState = (int)TaskStatusEnum.RGV_WaitSend; |
| | | item.Dispatchertime = DateTime.Now; |
| | | } |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | } |
| | |
| | | #region ä¸ååºåºä»»å¡ |
| | | public void SendOutTask(List<Dt_Task> tasks) |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | var i = 0; |
| | | foreach (var item in tasks) |
| | | { |
| | | i++; |
| | | var stationManger = _stationMangerService.GetOutStationInfo(item.TargetAddress); |
| | | if (stationManger.IsOccupied != LocationStatusEnum.Free.ObjToInt()) continue; |
| | | //if (stationManger.IsOccupied != LocationStatusEnum.Free.ObjToInt()) |
| | | //{ |
| | | // item.ExceptionMessage = $"åºåºç«å°ã{stationManger.StationCode}ã被å ç¨"; |
| | | // continue; |
| | | //} |
| | | item.NextAddress = stationManger.StationCode; |
| | | #region ä¸ååºåºä»»å¡ |
| | | fOURBOTnewMovePodTask.priority = item.Grade; |
| | | fOURBOTnewMovePodTask.podID = item.PalletCode; |
| | | fOURBOTnewMovePodTask.destination = item.NextAddress; |
| | | //fOURBOTnewMovePodTask.desNodeID = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desStationCodes = item.NextAddress; |
| | | fOURBOTnewMovePodTask.desExt = new |
| | | { |
| | | unload = 0//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | unload = 1//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 2; |
| | | fOURBOTnewMovePodTask.taskExt = new |
| | | { |
| | | autoToRest = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 5; |
| | | fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | | { |
| | | FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | string dataJson = fOURBOTReturn.data.ToString(); |
| | | FOURBOTnewMovePodTaskResponseData? fOURBO = JsonConvert.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(dataJson); |
| | | if (fOURBO == null || fOURBO.taskID == 0) |
| | | { |
| | | throw new Exception($"æªè·åå°åå车è¿åçä»»å¡IDï¼è¿åæ°æ®ï¼{response}"); |
| | | } |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | _stationMangerService.UpdateData(stationManger); |
| | | item.Dispatchertime = DateTime.Now; |
| | | //stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | //_stationMangerService.UpdateData(stationManger); |
| | | } |
| | | #endregion |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(TaskJob), ex.Message, ex); |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸ååå车åºåºä»»å¡", "", ""); |
| | | } |
| | | } |
| | | #endregion |