From 441b6f8d257a01b2998253ef0515a201777d7e68 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期五, 04 七月 2025 14:06:49 +0800 Subject: [PATCH] 修改入库、移库、出库逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx | 0 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx | 0 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneExtend/SignalInteraction.cs | 86 +++++-- 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx | 0 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 11 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 187 +++++++--------- 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx | 0 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f782a76a-5636-414d-a87a-39e5a61406ef.vsidx | 0 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs | 8 /dev/null | 0 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs | 39 ++- 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0c2ae6db-773d-4b1d-ba5d-0680c7c92288.vsidx | 0 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs | 6 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs | 4 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 24 + 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs | 242 ++++++++++++++++----- 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2 | 0 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs | 13 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_StackCrane.cs | 2 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0637e846-7baa-4b58-b0a0-0a586d9c58e4.vsidx | 0 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo | 0 24 files changed, 386 insertions(+), 242 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/42e3722a-46ec-44ec-82fc-0bf3fa30c915.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/42e3722a-46ec-44ec-82fc-0bf3fa30c915.vsidx" deleted file mode 100644 index e42a8a9..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/42e3722a-46ec-44ec-82fc-0bf3fa30c915.vsidx" +++ /dev/null Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ddb81e50-aab2-46f5-81bb-c5c3fca804ce.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx" similarity index 68% rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ddb81e50-aab2-46f5-81bb-c5c3fca804ce.vsidx" rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx" index 976cf16..1ed89ba 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ddb81e50-aab2-46f5-81bb-c5c3fca804ce.vsidx" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77bf8ba3-70ed-4aa9-82c4-1fd9c3618af6.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx" similarity index 84% rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77bf8ba3-70ed-4aa9-82c4-1fd9c3618af6.vsidx" rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx" index d14d29d..4ad355b 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77bf8ba3-70ed-4aa9-82c4-1fd9c3618af6.vsidx" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/cda85d9c-be73-4192-81be-494735162144.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx" similarity index 79% rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/cda85d9c-be73-4192-81be-494735162144.vsidx" rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx" index cf65f37..c6d4fb3 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/cda85d9c-be73-4192-81be-494735162144.vsidx" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2fc23e4a-c23f-4436-8d17-2525c73bf14d.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f782a76a-5636-414d-a87a-39e5a61406ef.vsidx" similarity index 75% rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2fc23e4a-c23f-4436-8d17-2525c73bf14d.vsidx" rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f782a76a-5636-414d-a87a-39e5a61406ef.vsidx" index b3c2fd9..aad129c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2fc23e4a-c23f-4436-8d17-2525c73bf14d.vsidx" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f782a76a-5636-414d-a87a-39e5a61406ef.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx" new file mode 100644 index 0000000..e1b4d16 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user" index d14afa4..f45581f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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> \ No newline at end of file diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs" index 59b47ef..57528e2 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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; diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_StackCrane.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_StackCrane.cs" index 7ba71e1..4e6adcb 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_StackCrane.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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 diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" index 884c120..740ecd1 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs" index aff3ceb..f0d1a2c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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 鍚慦MS鐢宠 + 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) { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" index 8169f2e..18cbfe1 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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 } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" index 2535656..1066bcb 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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> - /// 浠诲姟姝e父瀹屾垚 + /// 浠诲姟瀹屾垚 /// </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); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneExtend/SignalInteraction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneExtend/SignalInteraction.cs" index 9ef6f79..dfef3d8 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneExtend/SignalInteraction.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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}銆�"); } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0637e846-7baa-4b58-b0a0-0a586d9c58e4.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0637e846-7baa-4b58-b0a0-0a586d9c58e4.vsidx" new file mode 100644 index 0000000..589477c --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0637e846-7baa-4b58-b0a0-0a586d9c58e4.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d0171a1-3fb1-4ed9-bfb5-11bb3a28ab1a.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0c2ae6db-773d-4b1d-ba5d-0680c7c92288.vsidx" similarity index 74% rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d0171a1-3fb1-4ed9-bfb5-11bb3a28ab1a.vsidx" rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0c2ae6db-773d-4b1d-ba5d-0680c7c92288.vsidx" index 1b517b7..b31cad0 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d0171a1-3fb1-4ed9-bfb5-11bb3a28ab1a.vsidx" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0c2ae6db-773d-4b1d-ba5d-0680c7c92288.vsidx" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4e3898f5-9ffc-4579-ad98-8cc5a550febc.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4e3898f5-9ffc-4579-ad98-8cc5a550febc.vsidx" deleted file mode 100644 index a452a05..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4e3898f5-9ffc-4579-ad98-8cc5a550febc.vsidx" +++ /dev/null Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" index c36b6cf..e24a286 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" index baecaa8..f32a61a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" index d7deb8d..c6f33fb 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" index d96dc06..385c0a8 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" index 085798e..3b78bf9 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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(); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" index a940808..8142e14 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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++; } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" index bc247f5..0a47352 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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(); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user" index ca6c42d..caa556c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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> \ No newline at end of file -- Gitblit v1.9.3