ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/42e3722a-46ec-44ec-82fc-0bf3fa30c915.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f782a76a-5636-414d-a87a-39e5a61406ef.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidxBinary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -6,7 +6,7 @@ <Project> <PropertyGroup> <_PublishTargetUrl>E:\IISText\èæ¹ä¸ä¸\WCS</_PublishTargetUrl> <History>True|2025-06-26T04:37:56.3484297Z;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History> <History>True|2025-07-04T01:01:52.1304268Z;True|2025-06-30T18:01:52.8637969+08:00;True|2025-06-30T17:01:56.3064177+08:00;True|2025-06-30T16:38:12.1057130+08:00;True|2025-06-28T14:30:49.7946659+08:00;True|2025-06-28T10:55:58.8222554+08:00;True|2025-06-28T08:47:43.7229176+08:00;True|2025-06-26T12:37:56.3484297+08:00;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History> <LastFailureDetails /> </PropertyGroup> </Project> ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs
@@ -134,19 +134,19 @@ if (tasktype == 0) { if (string.IsNullOrEmpty(currentAddress)) _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState <= (int)TaskOutStatusEnum.Car_OutFinish, TaskOrderBy); else _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState <= (int)TaskOutStatusEnum.Car_OutFinish), TaskOrderBy); } else { if (TaskInboundTypes.Contains(tasktype)) { _Task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy) ?? BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy); _Task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState <= (int)TaskOutStatusEnum.Car_OutFinish, TaskOrderBy) ?? BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy); } else if (TaskOutboundTypes.Contains(tasktype)) { _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy) ?? BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy) ?? BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState <= (int)TaskOutStatusEnum.Car_OutFinish, TaskOrderBy); } } if (_Task != null) tasktype = _Task.TaskType; ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_StackCrane.cs
@@ -98,7 +98,7 @@ if (task.TargetIsPickPlace) { task.TaskState = (int)TaskRelocationStatusEnum.RelocationFinish; WMStask.TaskState = task.TaskState; //WMStask.TaskState = task.TaskState; AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete); } else ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -119,6 +119,10 @@ task.NextAddress = routers.FirstOrDefault().ChildPosi; } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { task.TaskState = item.SourceIsPickPlace ? TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() : TaskRelocationStatusEnum.RelocationNew.ObjToInt(); } tasks.Add(task); } BaseDal.AddData(tasks); @@ -318,14 +322,14 @@ { Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { task.TaskState = (int)TaskOutStatusEnum.OutPending; } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { task.TaskState = (int)TaskInStatusEnum.InPending; } //if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) //{ // task.TaskState = (int)TaskOutStatusEnum.OutPending; //} //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) //{ // task.TaskState = (int)TaskInStatusEnum.InPending; //} task.ExceptionMessage = message; task.ModifyDate = DateTime.Now; BaseDal.UpdateData(task); @@ -619,9 +623,9 @@ /// <param name="TaskState"></param> /// <param name="TaskType"></param> /// <returns></returns> public Dt_Task GetTaskState(int TaskState, int TaskType) public Dt_Task? GetTaskState(int TaskState, int TaskType) { Dt_Task task = null; Dt_Task? task = null; if (TaskState > 0 && TaskType > 0) task = BaseDal.QueryFirst(x => x.TaskState == TaskState && x.TaskType == TaskType); else if (TaskState > 0) ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs
@@ -14,29 +14,47 @@ using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO.WMSInfo; using WIDESEAWCS_Tasks.ShuttleCarJob; using System.Reflection.Metadata; namespace WIDESEAWCS_Tasks { partial class CommonShuttleCarJob { private readonly object _lockObject = new object(); #region å åæºç§»è½¦å®æ /// <summary> /// è·åå åæºç§»è½¦/ç§»åºå çµä»»å¡ /// è·åå åæºå®æç©¿æ¢è½¦å¾ æ§è¡ä»»å¡ /// </summary> public void GetSC_CarFinish() { Dt_Task dt_Task = GetTask(TaskCarStatusEnum.SC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCar.ObjToInt());//ç§»è½¦ä»»å¡ #region ç§»è½¦ä»»å¡ Dt_Task dt_Task = GetTask(TaskCarStatusEnum.SC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCar.ObjToInt()); if (dt_Task != null) { UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress); dt_Task.TaskState = TaskCarStatusEnum.RelocationCarFinish.ObjToInt(); _taskService.AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete); } dt_Task = GetTask(CarChargingTaskEnum.CarChargingSC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCarCharging.ObjToInt());//移车å çµä»»å¡ #endregion #region 移车å çµä»»å¡ dt_Task = GetTask(CarChargingTaskEnum.CarChargingSC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCarCharging.ObjToInt()); if (dt_Task != null) { UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress); SendTask(dt_Task);//ä¸åå çµä»»å¡ } #endregion #region ç§»åºä»»å¡ dt_Task = GetTask(TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt(), TaskRelocationTypeEnum.Relocation.ObjToInt()); if (dt_Task != null) SendTask(dt_Task); #endregion #region å ¥åºä»»å¡ dt_Task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish); if (dt_Task != null) SendTask(dt_Task); #endregion } #endregion /// <summary> @@ -47,21 +65,110 @@ public void UpdateShuttleCar(string ShuttleCarCode, string Address) { var ShuttleCar = QueryCode(ShuttleCarCode); string[] targetCodes = Address.Split("-"); var Row = Convert.ToInt16(targetCodes[0]); if (Row == 3) { ShuttleCar.ShuttleCarPosition = Address; ShuttleCar.ShuttleCarPosition1 = Address; } else { //var a = Row == 1 ? 2.ToString("000") : 1.ToString("000"); ShuttleCar.ShuttleCarPosition = Address; ShuttleCar.ShuttleCarPosition1 = Address;// a + "-" + targetCodes[1] + "-" + targetCodes[2]; } ShuttleCar.ShuttleCarPosition = Address; ShuttleCar.ShuttleCarPosition1 = Address; _shuttleCarService.UpdateData(ShuttleCar); } public void GetShuttleCarTask(ShuttleCar shuttleCar, ShuttleCarTaskCommandR command) { #region æ°å»ºç§»è½¦å çµä»»å¡ Dt_Task CarCharging_Task = GetTask((int)CarChargingTaskEnum.CarChargingNew, (int)TaskOtherTypeEnum.RelocationCarCharging); if (CarCharging_Task != null) { Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == CarCharging_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCarCharging.ObjToInt()); if (_Task == null) SendTask(CarCharging_Task); else if (_taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) SendTask(CarCharging_Task); } #endregion #region æ°å»ºç§»è½¦ä»»å¡èµ·ç¹ä¸ºç©º Dt_Task? RelocationCar_Task = null; lock (_lockObject) { RelocationCar_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar); if (RelocationCar_Task != null) { if (string.IsNullOrEmpty(RelocationCar_Task.SourceAddress)) { (bool, Dt_ShuttleCar) result = GetSourceTask(shuttleCar, command); if (result.Item1) UpdateSource(ref RelocationCar_Task, result.Item2); else GetShuttleCar(ref RelocationCar_Task, shuttleCar);//è·åå¦å¤ä¸ä¸ªç©¿æ¢è½¦ä¿¡æ¯ } } Thread.Sleep(1000); } #endregion #region å åæºç§»åºå®æåä»»å¡/å åæºåºåºå®æåä»»å¡ //夿æ¯å¦å卿»¡è¶³å åæºå ¥åºçä»»å¡ if (_taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && !string.IsNullOrEmpty(x.NextAddress), _taskService.TaskOrderBy) == null) { Dt_Task dt_Task = _taskRepository.QueryFirst(x => _taskService.TaskRelocationTypes.Contains(x.TaskType) && x.TaskState < (int)TaskRelocationStatusEnum.SC_RelocationFinish, _taskService.TaskOrderBy) ?? _taskRepository.QueryFirst(x => _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState < (int)TaskOutStatusEnum.SC_OutFinish, _taskService.TaskOrderBy); if (dt_Task != null) { if (dt_Task.TaskState == (int)TaskRelocationStatusEnum.RelocationNew || dt_Task.TaskState == (int)TaskOutStatusEnum.OutNew) { var ShuttleCar = _shuttleCarService.QueryShuttleCar(dt_Task.SourceAddress);//å¤æèµ·ç¹æ¯å¦æç©¿æ¢è½¦ if (ShuttleCar == null) { if (RelocationCar_Task != null && string.IsNullOrEmpty(RelocationCar_Task.TargetAddress)) { RelocationCar_Task.TargetAddress = dt_Task.SourceAddress; RelocationCar_Task.NextAddress = dt_Task.SourceAddress; _taskService.UpdateData(RelocationCar_Task); _taskExecuteDetailService.AddTaskExecuteDetail(RelocationCar_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡ç®æ å°å"); } else _taskService.AddRelocationCarTask("", dt_Task.SourceAddress); } else { dt_Task.ShuttleCarCode = ShuttleCar.ShuttleCarCode; SendTask(dt_Task); } } } } #endregion #region æ°å»ºç§»è½¦ä»»å¡ç»ç¹ä¸ºç©º if (RelocationCar_Task != null) { if (string.IsNullOrEmpty(RelocationCar_Task.TargetAddress)) { #region åWMSç³è¯· var ShuttleCar = _shuttleCarService.QueryNoCode(RelocationCar_Task.ShuttleCarCode); WebResponseContent content = new WebResponseContent(); var ResultData = HttpHelper.PostAsync(WMSInterfaceAddress.GetPosition + $"?position={RelocationCar_Task.SourceAddress}&&position1={ShuttleCar.ShuttleCarPosition}", "", headers: new Dictionary<string, string>()); if (ResultData.Result != null) { content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); if (content != null && content.Status) { RelocationCar_Task.TargetAddress = content.Message; RelocationCar_Task.NextAddress = RelocationCar_Task.TargetAddress; _taskService.UpdateData(RelocationCar_Task); _taskExecuteDetailService.AddTaskExecuteDetail(RelocationCar_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡ç®æ å°å"); } } #endregion } if (!string.IsNullOrEmpty(RelocationCar_Task.SourceAddress) && !string.IsNullOrEmpty(RelocationCar_Task.TargetAddress) && !string.IsNullOrEmpty(RelocationCar_Task.ShuttleCarCode)) { Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == RelocationCar_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCar.ObjToInt()); if (_Task == null) SendTask(RelocationCar_Task); else if (_taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) SendTask(RelocationCar_Task); } } #endregion } private static readonly SemaphoreSlim _CarTaskObject = new SemaphoreSlim(1, 1); #region è·åç§»è½¦ä»»å¡ /// <summary> @@ -138,22 +245,23 @@ #endregion #region ç©¿æ¢è½¦ä»»å¡ var task = _taskService.ShuttleCarRelocationTask(shuttleCar.DeviceCode);//è·åç©¿æ¢è½¦ç§»åºä»»å¡ if (task != null) { if (!task.SourceIsPickPlace && task.ShuttleCarCode == shuttleCar.DeviceCode) { SendTask(task); } } else { var task = _taskService.ShuttleCarRelocationTask(shuttleCar.DeviceCode);//è·åç©¿æ¢è½¦ç§»åºä»»å¡ task = _taskService.QueryShuttleCarTask(shuttleCar.DeviceCode); if (task != null) { if (!task.SourceIsPickPlace && task.ShuttleCarCode == shuttleCar.DeviceCode) if (_taskService.TaskOutboundTypes.Contains(task.TaskType)) { SendTask(task); } } else { task = _taskService.QueryShuttleCarTask(shuttleCar.DeviceCode); if (task != null) { if (_taskService.TaskOutboundTypes.Contains(task.TaskType) && !task.SourceIsPickPlace) if (!task.SourceIsPickPlace && task.TaskState == (int)TaskOutStatusEnum.OutNew) { var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);//åºåºä»»å¡å¤æèµ·ç¹æ¯å¦æç©¿æ¢è½¦ if (ShuttleCar == null) _taskService.AddRelocationCarTask("", task.SourceAddress); @@ -163,11 +271,12 @@ SendTask(task); } } else SendTask(task); } else SendTask(task); } } #endregion } catch (Exception) @@ -197,6 +306,7 @@ _taskExecuteDetailService.AddTaskExecuteDetail(dt_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡èµ·å§å°å"); } #endregion /// <summary> /// 夿å½åç©¿æ¢è½¦æ¯å¦å¯ä»¥æ§è¡ç§»åº /// </summary> @@ -209,40 +319,50 @@ bool ok = false; if (command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal) { #region 夿å½åç©¿æ¢è½¦æ¯å¦åå¨ä»»å¡ Dt_Task? _Task = _taskRepository.QueryFirst(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition); if (_taskRepository.QueryFirst(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition && _taskService.TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == TaskRelocationStatusEnum.SC_RelocationExecuting.ObjToInt()) != null) return (ok, _ShuttleCar); Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == _ShuttleCar.ShuttleCarCode); if (_Task != null) { if (_Task.TaskState == TaskOutStatusEnum.OutNew.ObjToInt() || _Task.TaskState == TaskRelocationStatusEnum.RelocationNew.ObjToInt() || _Task.TaskState == TaskCarStatusEnum.CarNew.ObjToInt() || _Task.TaskState == CarChargingTaskEnum.CarChargingNew.ObjToInt()) { _Task.ShuttleCarCode = shuttleCar.DeviceCode; SendTask(_Task); return (ok, _ShuttleCar); } } _Task = _taskRepository.QueryFirst(x => x.TargetAddress == _ShuttleCar.ShuttleCarPosition); if (_Task != null) { if (_Task.TaskState == TaskInStatusEnum.SC_InFinish.ObjToInt() || _Task.TaskState == TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt() || _Task.TaskState == CarChargingTaskEnum.CarChargingSC_CarFinish.ObjToInt()) { _Task.ShuttleCarCode = shuttleCar.DeviceCode; SendTask(_Task); return (ok, _ShuttleCar); } } _Task = _taskRepository.QueryData(x => x.ShuttleCarCode == _ShuttleCar.ShuttleCarCode && _taskService.TaskOutboundTypes.Contains(x.TaskType)).OrderByDescending(x => x.CreateDate).FirstOrDefault(); if (_Task != null) { if (_Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) _Task = null; } #endregion ok = _taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt(); ok = _Task == null; #region 夿å½åç©¿æ¢è½¦æ¯å¦åå¨ä»»å¡ //Dt_Task? _Task = _taskRepository.QueryFirst(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition); //if (_Task != null) //{ // if (_Task.TaskState <= TaskOutStatusEnum.Car_OutFinish.ObjToInt() || // _Task.TaskState <= TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() || // _Task.TaskState <= TaskCarStatusEnum.ShuttleCar_Finish.ObjToInt() || // _Task.TaskState <= CarChargingTaskEnum.CarCharging_Finish.ObjToInt()) // { // //_Task.ShuttleCarCode = shuttleCar.DeviceCode; // //SendTask(_Task); // return (ok, _ShuttleCar); // } //} //_Task = _taskRepository.QueryFirst(x => x.TargetAddress == _ShuttleCar.ShuttleCarPosition); //if (_Task != null) //{ // if (_Task.TaskState >= TaskInStatusEnum.Line_InFinish.ObjToInt() || // _Task.TaskState >= TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() || // _Task.TaskState >= CarChargingTaskEnum.CarCharging_Finish.ObjToInt()) // { // //_Task.ShuttleCarCode = shuttleCar.DeviceCode; // //SendTask(_Task); // return (ok, _ShuttleCar); // } //} //_Task = _taskRepository.QueryData(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition && //x.TaskState < TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() && //x.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt()).OrderByDescending(x => x.CreateDate).FirstOrDefault(); //if (_Task != null) return (ok, _ShuttleCar); //_Task = _taskRepository.QueryData(x => x.ShuttleCarCode == _ShuttleCar.ShuttleCarCode && _taskService.TaskOutboundTypes.Contains(x.TaskType)).OrderByDescending(x => x.CreateDate).FirstOrDefault(); //if (_Task != null) //{ // if (_Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) // _Task = null; //} //ok = _Task == null; #endregion } if (!ok) { ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs
@@ -85,9 +85,7 @@ } #endregion #region è·åå åæºç§»è½¦/ç§»åºå®æä»»å¡ GetSC_CarFinish(); #endregion GetSC_CarFinish();//å åæºå®æç§»è½¦/移车å çµ/ç§»åº/å ¥åºä»»å¡ #region å建移车å çµä»»å¡ if (command.Err_Status == (short)ShuttleCarErr.LowBattery || command.ElectricQuantity <= (short)ShuttleCarErr.LowBattery) @@ -105,7 +103,7 @@ ShuttleCarTaskCommandR command1 = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar1, shuttleCar1.DeviceCode);//读åç©¿æ¢è½¦ä¿¡æ¯ if (command1 != null && command1.JoinStatus == 1) { if (command1.Status == (short)ShuttleCarStatus.Charging && command1.ElectricQuantity /*> command.ElectricQuantity*/ >= 50) if (command1.Status == (short)ShuttleCarStatus.Charging && command1.ElectricQuantity >= 50) { shuttleCar1.SetValue(ShuttleCarDBName.TaskType, (short)ShuttleCarStatus.QuitCharging); } @@ -114,13 +112,26 @@ } else { string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//å çµä½ //夿å çµä½æ¯å¦æè½¦ string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//夿å çµä½æ¯å¦æè½¦ var ShuttleCar1 = _shuttleCarService.QueryShuttleCar(CarChargingStation); if (ShuttleCar1 != null && ShuttleCar1.ShuttleCarCode != shuttleCar.DeviceCode) { #region 夿æ¯å¦å卿°å»ºç§»è½¦ä»»å¡ if (_taskRepository.QueryFirst(x => x.ShuttleCarCode == ShuttleCar1.ShuttleCarCode) == null) _taskService.AddRelocationCarTask(ShuttleCar1.ShuttleCarPosition, "", ShuttleCar1.ShuttleCarCode); { var dt_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar); if (dt_Task != null && string.IsNullOrEmpty(dt_Task.SourceAddress)) { dt_Task.SourceAddress = ShuttleCar1.ShuttleCarPosition; dt_Task.CurrentAddress = dt_Task.SourceAddress; dt_Task.ShuttleCarCode = ShuttleCar1.ShuttleCarCode; _taskService.UpdateData(dt_Task); _taskExecuteDetailService.AddTaskExecuteDetail(dt_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡èµ·å§å°å"); } else _taskService.AddRelocationCarTask(ShuttleCar1.ShuttleCarPosition, "", ShuttleCar1.ShuttleCarCode); } #endregion } else { @@ -134,18 +145,12 @@ #region è·å移车/åºå ¥åºä»»å¡ if (command != null && (command.Status == (short)ShuttleCarStatus.Standby || command.Status == (short)ShuttleCarStatus.Charging) && (command.Status == (short)ShuttleCarStatus.Standby || command.Status == (short)ShuttleCarStatus.Charging) && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && (command.Err_Status == (short)ShuttleCarErr.Normal || command.Err_Status == (short)ShuttleCarErr.LowBattery) ) (command.Err_Status == (short)ShuttleCarErr.Normal || command.Err_Status == (short)ShuttleCarErr.LowBattery)) { var dt_Task = GetTask(TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt(), TaskRelocationTypeEnum.Relocation.ObjToInt());//ç§»åºä»»å¡ if (dt_Task != null && shuttleCar.DeviceCode == dt_Task.ShuttleCarCode) SendTask(dt_Task); else Get_CarTask(shuttleCar, command); //Get_CarTask(shuttleCar, command); GetShuttleCarTask(shuttleCar, command); } #endregion } ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -81,102 +81,24 @@ WriteDebug($"{commonStackerCrane.DeviceName}ä»»å¡å®æ", $"{remark},ä»»å¡å·ã{commonStackerCrane.CurrentTaskNum}ã"); NormalCompleted(commonStackerCrane); } //DeviceProtocolDetailDTO? deviceProtocolDetail = commonStackerCrane.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.CompleteStatus).ToString() && x.DeviceProParamName == nameof(StackerCraneTaskCommandR.CompleteStatus)); //if (deviceProtocolDetail != null) //{ // MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType); // if (method != null) method.Invoke(this, new object[] { commonStackerCrane }); //} #endregion #region ä»»å¡é»è¾å¤ç if (common.Onlinestate == (short)Onlinestate.online) { #region æ¥è¯¢ä»»å¡,é»è¾å¤ç if (common.RunStatus == (short)RunStatus.Standby) { var Task = _taskService.GetTaskState((int)TaskCarStatusEnum.ShuttleCar_Finish, (int)TaskOtherTypeEnum.RelocationCar);//è·åç§»è½¦ä»»å¡ var Task1 = _taskService.GetTaskState((int)CarChargingTaskEnum.CarCharging_Finish, (int)TaskOtherTypeEnum.RelocationCarCharging);//è·å移车å çµä»»å¡ if (Task != null) { SendTask(commonStackerCrane, Task); } else if (Task1 != null) { SendTask(commonStackerCrane, Task1); } #region ç©¿æ¢è½¦ç§»è½¦/å çµä»»å¡ var Task = _taskService.GetTaskState((int)CarChargingTaskEnum.CarCharging_Finish, (int)TaskOtherTypeEnum.RelocationCarCharging) ?? _taskService.GetTaskState((int)TaskCarStatusEnum.ShuttleCar_Finish, (int)TaskOtherTypeEnum.RelocationCar); if (Task != null) SendTask(commonStackerCrane, Task); #endregion else { Dt_Task? task = GetTask(commonStackerCrane);//è·åå åæºä»»å¡ if (task != null) { if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//ç§»åºä»»å¡å¤æç»ç¹æ¯å¦æç©¿æ¢è½¦ { if (task.SourceIsPickPlace && task.TaskState == (int)TaskRelocationStatusEnum.RelocationNew) { var ShuttleCar = GetShuttleCarInfo(task.TargetAddress);//ç§»åºä»»å¡å¤æç»ç¹æ¯å¦æç©¿æ¢è½¦ if (ShuttleCar == null) { _taskService.AddRelocationCarTask("", task.TargetAddress); } else SendTask(commonStackerCrane, task);//ä¸åå åæºä»»å¡ } else if (!task.SourceIsPickPlace && task.TaskState == (int)TaskRelocationStatusEnum.RelocationNew && task.ShuttleCarCode == null) { var ShuttleCar = GetShuttleCarInfo(task.SourceAddress);//ç§»åºä»»å¡å¤æèµ·ç¹æ¯å¦æç©¿æ¢è½¦ if (ShuttleCar != null) { task.ShuttleCarCode = ShuttleCar.ShuttleCarCode; _taskService.UpdateData(task); } else _taskService.AddRelocationCarTask("", task.SourceAddress); } else if (/*!task.TargetIsPickPlace &&*/ task.TaskState == (int)TaskRelocationStatusEnum.CarSource_Finish) { var ShuttleCar = GetShuttleCarInfo(task.TargetAddress);//ç§»åºä»»å¡å¤æç»ç¹æ¯å¦æç©¿æ¢è½¦ if (task.TargetIsPickPlace && ShuttleCar != null)//移走 { _taskService.AddRelocationCarTask(task.TargetAddress, "", ShuttleCar.ShuttleCarCode); } else if (!task.TargetIsPickPlace && ShuttleCar == null) { _taskService.AddRelocationCarTask("", task.TargetAddress); #region æ¥è¯¢ task = _taskService.QueryCarOutFinish(); if (task != null) SendTask(commonStackerCrane, task);//ä¸åå åæºä»»å¡ #endregion } else { task.ShuttleCarCode = ShuttleCar?.ShuttleCarCode; _taskService.UpdateData(task); SendTask(commonStackerCrane, task);//ä¸åå åæºä»»å¡ } } } else if (_taskService.TaskInboundTypes.Contains(task.TaskType)) { var ShuttleCar = GetShuttleCarInfo(task.TargetAddress);//å ¥åºä»»å¡å¤æç»ç¹æ¯å¦æç©¿æ¢è½¦ if (task.TargetIsPickPlace && ShuttleCar != null)//移走 { _taskService.AddRelocationCarTask(task.TargetAddress, "", ShuttleCar.ShuttleCarCode); } else if (!task.TargetIsPickPlace && ShuttleCar == null) { _taskService.AddRelocationCarTask("", task.TargetAddress); } else { task.ShuttleCarCode = ShuttleCar?.ShuttleCarCode; _taskService.UpdateData(task); SendTask(commonStackerCrane, task);//ä¸åå åæºä»»å¡ } } else SendTask(commonStackerCrane, task);//ä¸åå åæºä»»å¡ } Task = GetStackerCraneTask(); if (Task != null) SendTask(commonStackerCrane, Task); } } #endregion } @@ -189,6 +111,7 @@ } return Task.CompletedTask; } #region ä»»å¡ä¸åç»å åæº private void SendTask(SpeStackerCrane commonStackerCrane, Dt_Task task) { @@ -212,26 +135,9 @@ } #endregion #region ä»»å¡å®æ /// <summary> /// ä»»å¡å®æäºä»¶è®¢é çæ¹æ³ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) { CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane; if (commonStackerCrane != null) { if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) { Console.Out.WriteLine("TaskCompleted" + e.TaskNum); _taskService.StackCraneTaskCompleted(e.TaskNum); commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); } } } /// <summary> /// 任塿£å¸¸å®æ /// ä»»å¡å®æ /// </summary> /// <param name="commonStackerCrane"></param> public void NormalCompleted(SpeStackerCrane commonStackerCrane) @@ -241,6 +147,69 @@ var content = _taskService.StackCraneTaskCompleted(commonStackerCrane.CurrentTaskNum); commonStackerCrane.SetValue(StackerCraneDBName.ConfirmComplete, content.Status); } } #endregion private Dt_Task? GetStackerCraneTask() { Dt_Task? task = null; task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && !string.IsNullOrEmpty(x.NextAddress), _taskService.TaskOrderBy);//å ¥åºä»»å¡ if (task != null) task = GetTaskOk(task); if (task == null) { task = _taskRepository.QueryFirst(x => _taskService.TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskRelocationStatusEnum.CarSource_Finish, _taskService.TaskOrderBy) ??//ç§»åºä»»å¡ _taskRepository.QueryFirst(x => _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Car_OutFinish, _taskService.TaskOrderBy);//åºåºä»»å¡ if (task != null) task = GetTaskOk(task); } return task; } /// <summary> /// 夿任塿¯å¦æ»¡è¶³å åæºæ§è¡ /// </summary> /// <param name="task"></param> /// <returns></returns> public Dt_Task? GetTaskOk(Dt_Task? task) { #region å ¥åº/ç§»åºä»»å¡ if (_taskService.TaskInboundTypes.Contains(task.TaskType) || _taskService.TaskRelocationTypes.Contains(task.TaskType)) { var ShuttleCar = GetShuttleCarInfo(task.TargetAddress);//å ¥åºä»»å¡å¤æç»ç¹æ¯å¦æç©¿æ¢è½¦ if (task.TargetIsPickPlace && ShuttleCar != null)//移走 { _taskService.AddRelocationCarTask(task.TargetAddress, "", ShuttleCar.ShuttleCarCode); task = null; } else if (!task.TargetIsPickPlace && ShuttleCar == null) { _taskService.AddRelocationCarTask("", task.TargetAddress); task = null; } else { if (ShuttleCar != null) { if (_taskRepository.QueryFirst(x => x.TaskType != task.TaskType && x.ShuttleCarCode == ShuttleCar.ShuttleCarCode) != null) task = null; else { task.ShuttleCarCode = ShuttleCar.ShuttleCarCode; _taskService.UpdateData(task); } } } } #endregion #region åºåºä»»å¡ else task = OutTaskStationIsOccupied(task); #endregion return task; } /// <summary> /// è·åä»»å¡ @@ -263,8 +232,8 @@ #region åºå ¥åºä»»å¡ else { task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); if (task != null) return task; //task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); //if (task != null) return task; if (commonStackerCrane.LastTaskType == null) { task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); @@ -273,7 +242,7 @@ { if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode) ?? _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); if (task == null) { task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); @@ -281,7 +250,7 @@ } else { task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode) ?? _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode) /*?? _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode)*/; if (task == null) { task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneExtend/SignalInteraction.cs
@@ -64,44 +64,83 @@ } else { Dt_ShuttleCar? shuttleCar1 = _shuttleCarService.QueryCode(task.ShuttleCarCode); if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt() && task.Remark == "") if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt()) { shuttleCar1 = _shuttleCarService.QueryNoCode(task.ShuttleCarCode); task.Remark = shuttleCar1.ShuttleCarCode; _taskService.UpdateData(task); var shuttleCar2 = _shuttleCarService.QueryNoCode(task.ShuttleCarCode); ShuttleCar shuttleCarA = Storage.Devices.FirstOrDefault(x => x.DeviceCode == shuttleCar2.ShuttleCarCode) as ShuttleCar; ShuttleCar shuttleCarB = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.ShuttleCarCode) as ShuttleCar; #region åè´§ if (ASRSRqtGetGoods) { shuttleCarA.SetValue(ShuttleCarDBName.ASRSRqtGetGoods, ASRSRqtGetGoods, shuttleCarA.DeviceCode); var AGVAlwASRSGetGoods = shuttleCarA.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.AGVAlwASRSGetGoods, shuttleCarA.DeviceCode);//å 许åè´§ if (AGVAlwASRSGetGoods) commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSGetGoods, AGVAlwASRSGetGoods); WriteDebug($"{commonStackerCrane.DeviceName}请æ±åè´§", $"ã{shuttleCarA.DeviceName}ã{(AGVAlwASRSGetGoods ? "å 许" : "ä¸å 许")}åè´§,ä»»å¡å·ã{task.TaskNum}ã"); } #endregion #region åè´§å®æ if (ASRSGetGoodsDone) { shuttleCarA.SetValue(ShuttleCarDBName.ASRSGetGoodsDone, ASRSGetGoodsDone, shuttleCarA.DeviceCode); WriteDebug($"{commonStackerCrane.DeviceName}åè´§å®æ", $"ã{shuttleCarA.DeviceName}ã,ä»»å¡å·ã{task.TaskNum}ã"); } #endregion #region æ¾è´§ if (ASRSRqtPutGoods) { shuttleCarB.SetValue(ShuttleCarDBName.ASRSRqtPutGoods, ASRSRqtPutGoods, shuttleCarB.DeviceCode); var AGVAlwASRSPuttGoods = shuttleCarB.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.AGVAlwASRSPuttGoods, shuttleCarB.DeviceCode);//å 许æ¾è´§ if (AGVAlwASRSPuttGoods) commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSPuttGoods, AGVAlwASRSPuttGoods); WriteDebug($"{commonStackerCrane.DeviceName}è¯·æ±æ¾è´§", $"ã{shuttleCarB.DeviceName}ã{(AGVAlwASRSPuttGoods ? "å 许" : "ä¸å 许")}æ¾è´§,ä»»å¡å·ã{task.TaskNum}ã"); } #endregion #region æ¾è´§å®æ if (ASRSPutAGoodsDone) { shuttleCarB.SetValue(ShuttleCarDBName.ASRSPutAGoodsDone, ASRSPutAGoodsDone, shuttleCarB.DeviceCode); WriteDebug($"{commonStackerCrane.DeviceName}æ¾è´§å®æ", $"ã{shuttleCarA.DeviceName}ã,ä»»å¡å·ã{task.TaskNum}ã"); } #endregion } if (shuttleCar1 != null) else { ShuttleCar shuttleCar = Storage.Devices.FirstOrDefault(x => x.DeviceName == shuttleCar1.ShuttleCarName) as ShuttleCar; ShuttleCar shuttleCar = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.ShuttleCarCode) as ShuttleCar; if (shuttleCar != null) { shuttleCar.SetValue(ShuttleCarDBName.ASRSRqtGetAGV, ASRSRqtGetAGV, shuttleCar.DeviceCode); if (ASRSRqtGetAGV) WriteDebug($"{commonStackerCrane.DeviceName}请æ±å车", $"ä»»å¡å·ã{task.TaskNum}ã"); shuttleCar.SetValue(ShuttleCarDBName.ASRSRqtGetGoods, ASRSRqtGetGoods, shuttleCar.DeviceCode); if (ASRSRqtGetGoods) WriteDebug($"{commonStackerCrane.DeviceName}请æ±åè´§", $"ä»»å¡å·ã{task.TaskNum}ã"); shuttleCar.SetValue(ShuttleCarDBName.ASRSRqtPutGoods, ASRSRqtPutGoods, shuttleCar.DeviceCode); if (ASRSRqtPutGoods) WriteDebug($"{commonStackerCrane.DeviceName}è¯·æ±æ¾è´§", $"ä»»å¡å·ã{task.TaskNum}ã"); var AGVAlwASRSGetAGV = shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.AGVAlwASRSGetAGV, shuttleCar.DeviceCode);//å 许å车 commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSGetAGV, AGVAlwASRSGetAGV); if (AGVAlwASRSGetAGV) WriteDebug($"{shuttleCar.DeviceName}å 许å车", $"ä»»å¡å·ã{task.TaskNum}ã"); if (ASRSRqtGetAGV) WriteDebug($"{commonStackerCrane.DeviceName}请æ±å车", $"ã{shuttleCar.DeviceName}ã{(AGVAlwASRSGetAGV ? "å 许" : "ä¸å 许")}å车,ä»»å¡å·ã{task.TaskNum}ã"); var AGVAlwASRSGetGoods = shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.AGVAlwASRSGetGoods, shuttleCar.DeviceCode);//å 许åè´§ commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSGetGoods, AGVAlwASRSGetGoods); if (AGVAlwASRSGetGoods) WriteDebug($"{shuttleCar.DeviceName}å 许åè´§", $"ä»»å¡å·ã{task.TaskNum}ã"); if (ASRSRqtGetGoods) WriteDebug($"{commonStackerCrane.DeviceName}请æ±åè´§", $"ã{shuttleCar.DeviceName}ã{(AGVAlwASRSGetGoods ? "å 许" : "ä¸å 许")}åè´§,ä»»å¡å·ã{task.TaskNum}ã"); var AGVAlwASRSPuttGoods = shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.AGVAlwASRSPuttGoods, shuttleCar.DeviceCode);//å 许æ¾è´§ commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSPuttGoods, AGVAlwASRSPuttGoods); if (AGVAlwASRSPuttGoods) WriteDebug($"{shuttleCar.DeviceName}å 许æ¾è´§", $"ä»»å¡å·ã{task.TaskNum}ã"); if (ASRSRqtPutGoods) WriteDebug($"{commonStackerCrane.DeviceName}è¯·æ±æ¾è´§", $"ã{shuttleCar.DeviceName}ã{(AGVAlwASRSPuttGoods ? "å 许" : "ä¸å 许")}æ¾è´§,ä»»å¡å·ã{task.TaskNum}ã"); commonStackerCrane.SetValue(StackerCraneDBName.AGVAlwASRSPutAGV, ASRSRqtPutAGV); if (ASRSRqtPutAGV) @@ -109,14 +148,15 @@ shuttleCar.SetValue(ShuttleCarDBName.ASRSGetAGVDone, ASRSGetAGVDone, shuttleCar.DeviceCode); if (ASRSGetAGVDone) WriteDebug($"{commonStackerCrane.DeviceName}åè½¦å®æ", $"ä»»å¡å·ã{task.TaskNum}ã"); WriteDebug($"{commonStackerCrane.DeviceName}åè½¦å®æ", $"ã{shuttleCar.DeviceName}ã,ä»»å¡å·ã{task.TaskNum}ã"); shuttleCar.SetValue(ShuttleCarDBName.ASRSGetGoodsDone, ASRSGetGoodsDone, shuttleCar.DeviceCode); if (ASRSGetGoodsDone) WriteDebug($"{commonStackerCrane.DeviceName}åè´§å®æ", $"ä»»å¡å·ã{task.TaskNum}ã"); WriteDebug($"{commonStackerCrane.DeviceName}åè´§å®æ", $"ã{shuttleCar.DeviceName}ã,ä»»å¡å·ã{task.TaskNum}ã"); shuttleCar.SetValue(ShuttleCarDBName.ASRSPutAGoodsDone, ASRSPutAGoodsDone, shuttleCar.DeviceCode); if (ASRSPutAGoodsDone) WriteDebug($"{commonStackerCrane.DeviceName}æ¾è´§å®æ", $"ä»»å¡å·ã{task.TaskNum}ã"); //shuttleCar.SetValue(ShuttleCarDBName.ASRSPutAGVDone, ASRSPutAGVDone, shuttleCar.DeviceCode); WriteDebug($"{commonStackerCrane.DeviceName}æ¾è´§å®æ", $"ã{shuttleCar.DeviceName}ã,ä»»å¡å·ã{task.TaskNum}ã"); } } } ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0637e846-7baa-4b58-b0a0-0a586d9c58e4.vsidxBinary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0c2ae6db-773d-4b1d-ba5d-0680c7c92288.vsidxBinary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4e3898f5-9ffc-4579-ad98-8cc5a550febc.vsidxBinary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suoBinary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -76,12 +76,12 @@ /// è·åå¯ç§»åºè´§ä½ /// </summary> /// <returns></returns> public Dt_LocationInfo AssignLocation() public Dt_LocationInfo AssignLocation(List<string> LocationCodes) { Dt_LocationInfo? locationInfo = null; string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//è·åç©¿æ¢è½¦å çµä½ç½® var ChargingStations = CarChargingStation.Split(","); locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.Row == 2, _emptyAssignOrderBy); locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && !LocationCodes.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.Row == 2, _emptyAssignOrderBy); if (locationInfo == null) locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Row == 1), _emptyAssignOrderBy); ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -47,7 +47,7 @@ /// è·åå¯ç§»åºè´§ä½ /// </summary> /// <returns></returns> Dt_LocationInfo? AssignLocation(); Dt_LocationInfo? AssignLocation(List<string> LocationCodes); /// <summary> /// æ ¹æ®è´§ä½ç¼å·è·åè´§ä½ä¿¡æ¯ /// </summary> ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -254,17 +254,17 @@ task.TargetAddress = task.NextAddress; string[] targetCodes = task.NextAddress.Split("-"); var Row = Convert.ToInt16(targetCodes[0]); task.TargetIsPickPlace = /*Row > 1 ?*/ locationInfo.MaxQty - locationInfo.CurrentQty == 1; task.TargetIsPickPlace = locationInfo.MaxQty - locationInfo.CurrentQty == 1; task.SourceIsPickPlace = false; stockInfo.LocationCode = locationInfo.LocationCode; stockInfo.StockStatus = StockStatusEmun.å ¥åºä¸.ObjToInt(); stockInfoDetail.Status = StockStatusEmun.å ¥åºä¸.ObjToInt(); locationInfo.CurrentQty++; if (locationInfo.MaxQty < locationInfo.CurrentQty) locationInfo.CurrentQty = locationInfo.MaxQty; stockInfo.SerialNumber = locationInfo.CurrentQty; orderDetail.OverInQuantity++; if (orderDetail.OverInQuantity > orderDetail.ReceiptQuantity) orderDetail.OverInQuantity = orderDetail.ReceiptQuantity; if (locationInfo.MaxQty < locationInfo.CurrentQty) locationInfo.CurrentQty = locationInfo.MaxQty; /*if (locationInfo.MaxQty == 12)*/ locationInfo.EnableStatus = EnableStatusEnum.OnlyOut.ObjToInt(); locationInfo.LocationStatus = LocationStatusEnum.Inbounding.ObjToInt(); ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -180,14 +180,17 @@ } if (stockInfos1.Count > 0) { Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation(); if (locationInfo2 == null) throw new Exception("æ å¯ç§»åºè´§ä½"); locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt(); locationInfos.Add(locationInfo2); List<string> strings = new List<string>(); foreach (var item in stockInfos1.GroupBy(x => x.LocationCode)) { Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation(strings); if (locationInfo2 == null) throw new Exception("æ å¯ç§»åºè´§ä½"); locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt(); strings.Add(locationInfo2.LocationCode); locationInfos.Add(locationInfo2); foreach (var item1 in item.OrderByDescending(x => x.SerialNumber)) { locationInfo2.CurrentQty++; Dt_Task task = new() { CurrentAddress = item1.LocationCode, @@ -204,8 +207,8 @@ TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) }; dt_Tasks.Add(task); item1.SerialNumber = locationInfo2.CurrentQty; item1.StockStatus = StockStatusEmun.ç§»åºä¸.ObjToInt(); //locationInfo2.CurrentQty++; } } } ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -453,7 +453,10 @@ overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); if (outboundOrderDetail.OverOutQuantity == outboundOrderDetail.OrderQuantity) { var outboundOrderdetail = outboundOrder.Details.First(x => x.Id == outboundOrderDetail.Id); outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); outboundOrderdetail.OverOutQuantity = outboundOrderDetail.OverOutQuantity; outboundOrderdetail.OrderDetailStatus = outboundOrderDetail.OrderDetailStatus; overCount++; } } @@ -496,9 +499,9 @@ Dt_LocationInfo Targetlocation = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);//ç®æ è´§ä½ Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);//æçåºå Sourcelocation.CurrentQty--; Targetlocation.CurrentQty++; //Targetlocation.CurrentQty++; stockInfo.LocationCode = Targetlocation.LocationCode; stockInfo.SerialNumber = Targetlocation.CurrentQty; //stockInfo.SerialNumber = Targetlocation.CurrentQty; stockInfo.StockStatus = StockStatusEmun.å·²å ¥åº.ObjToInt(); if (Sourcelocation.CurrentQty == 0) Sourcelocation.LocationStatus = LocationStatusEnum.Free.ObjToInt(); Dt_Task _Task = BaseDal.QueryFirst(x => x.TaskNum != task.TaskNum && x.TaskType == task.TaskType && x.SourceAddress == Sourcelocation.LocationCode && x.TargetAddress == Targetlocation.LocationCode); @@ -549,7 +552,7 @@ List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.Repository.LocationCodesGetStockInfos(new List<string> { stockInfo.LocationCode }).Where(x => x.StockStatus == StockStatusEmun.å·²å ¥åº.ObjToInt()).ToList(); if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt()) { stockInfo.SerialNumber = stockInfos.Count + 1; //stockInfo.SerialNumber = stockInfos.Count + 1; stockInfo.InDate = DateTime.Now; stockInfo.StockStatus = StockStatusEmun.å·²å ¥åº.ObjToInt(); stockInfoDetail.Status = StockStatusEmun.å·²å ¥åº.ObjToInt(); @@ -598,7 +601,7 @@ } #endregion stockInfo.SerialNumber = stockInfos.Count + 1; //stockInfo.SerialNumber = stockInfos.Count + 1; stockInfo.InDate = DateTime.Now; stockInfo.StockStatus = StockStatusEmun.å·²å ¥åº.ObjToInt(); stockInfoDetail.Status = StockStatusEmun.å·²å ¥åº.ObjToInt(); ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -6,7 +6,7 @@ <Project> <PropertyGroup> <_PublishTargetUrl>E:\IISText\èæ¹ä¸ä¸\WMS</_PublishTargetUrl> <History>True|2025-06-23T02:41:48.4640291Z;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History> <History>True|2025-07-04T01:02:45.7658413Z;True|2025-06-28T12:22:26.5226251+08:00;True|2025-06-23T10:41:48.4640291+08:00;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History> <LastFailureDetails /> </PropertyGroup> </Project>