| | |
| | | "WorkspaceRootPath": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wcshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\wcshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\outorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\models\\outorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\tn_material.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\models\\tn_material.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\inorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 4, |
| | | "SelectedChildIndex": 7, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "ViewState": "AgIAAAQAAAAAAAAAAAAswA0AAAAOAAAAAAAAAA==", |
| | | "ViewState": "AgIAAG4AAAAAAAAAAAAAAHkAAAAsAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-20T02:48:52.339Z", |
| | | "WhenOpened": "2025-05-27T10:24:13.523Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "TaskProcess.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ViewState": "AgIAAFIFAAAAAAAAAADwv1sFAAAvAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:42:44.641Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "AgvController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "ViewState": "AgIAABgAAAAAAAAAAAAAACUAAABJAAAAAAAAAA==", |
| | | "ViewState": "AgIAAAsAAAAAAAAAAAAqwBoAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-20T02:48:30.565Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "HttpHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ViewState": "AgIAAA4AAAAAAAAAAADwvxIAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T08:17:19.57Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "WMSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ViewState": "AgIAAN4EAAAAAAAAAAAuwE4FAAApAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T08:08:45.432Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "Program.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "ViewState": "AgIAAFAAAAAAAAAAAAAuwF0AAAAxAAAAAAAAAA==", |
| | | "ViewState": "AgIAAFcAAAAAAAAAAAAqwF0AAAApAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T06:01:09.462Z" |
| | | "WhenOpened": "2025-05-19T06:01:09.462Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "WmsController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ViewState": "AgIAADsAAAAAAAAAAAAIwEMAAAAoAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:41:35.255Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "WMSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ViewState": "AgIAAMICAAAAAAAAAAAAAOgCAAAfAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T09:53:43.906Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "WCSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "ViewState": "AgIAAK8AAAAAAAAAAAAuwLcAAAAdAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T06:26:13.784Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "ContainerHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "ViewState": "AgIAADICAAAAAAAAAADwvzgCAAArAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T06:39:16.056Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "LocationHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "ViewState": "AgIAAN0BAAAAAAAAAAAuwPgBAACJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T02:42:16.796Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 9, |
| | | "Title": "OutOrderDetail.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "ViewState": "AgIAACYAAAAAAAAAAAAYwDQAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T06:51:12.163Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "TN_Material.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "ViewState": "AgIAABQAAAAAAAAAAAA8wBkAAAALAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T06:50:41.626Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 11, |
| | | "Title": "MoboxController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "ViewState": "AgIAAH8AAAAAAAAAAAAuwI8AAAAPAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-26T03:21:14.486Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 13, |
| | | "Title": "InOrder.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\InOrder.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\InOrder.cs", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "TaskProcess.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ViewState": "AgIAAFsAAAAAAAAAAAAqwGcAAAARAAAAAAAAAA==", |
| | | "DocumentIndex": 12, |
| | | "Title": "HttpHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ViewState": "AgIAAJAAAAAAAAAAAAAuwLcAAAAZAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:42:44.641Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "WmsController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ViewState": "AgIAAAUAAAAAAAAAAAAuwCsAAAAqAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:41:35.255Z" |
| | | "WhenOpened": "2025-05-19T08:17:19.57Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "WorkspaceRootPath": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\core\\wcscore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\wcshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\wcshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\outorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\models\\outorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\tn_material.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\models\\tn_material.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|d:\\\u6C49\u548C\u667A\u80FD\\git-mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|solutionrelative:hh.wcs.mobox3.hangyang\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{0D76040B-45FB-EB89-2535-E32E957D1429}|HH.WCS.Mobox3.HangYang\\HH.WCS.HangYang.csproj|D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\hh.wcs.mobox3.hangyang\\models\\inorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 4, |
| | | "SelectedChildIndex": 7, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\core\\WCSCore.cs", |
| | | "ViewState": "AgIAAAQAAAAAAAAAAAAswA0AAAAOAAAAAAAAAA==", |
| | | "ViewState": "AgIAAG4AAAAAAAAAAAAAAHkAAAAsAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-20T02:48:52.339Z", |
| | | "WhenOpened": "2025-05-27T10:24:13.523Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "TaskProcess.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ViewState": "AgIAAFIFAAAAAAAAAADwv1sFAAAvAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:42:44.641Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "AgvController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\AgvController.cs", |
| | | "ViewState": "AgIAABgAAAAAAAAAAAAAACUAAABJAAAAAAAAAA==", |
| | | "ViewState": "AgIAAAsAAAAAAAAAAAAqwBoAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-20T02:48:30.565Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "HttpHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ViewState": "AgIAAA4AAAAAAAAAAADwvxIAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T08:17:19.57Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "WMSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ViewState": "AgIAAN4EAAAAAAAAAAAuwE4FAAApAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T08:08:45.432Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "Program.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\Program.cs", |
| | | "ViewState": "AgIAAFAAAAAAAAAAAAAuwF0AAAAxAAAAAAAAAA==", |
| | | "ViewState": "AgIAAFcAAAAAAAAAAAAqwF0AAAApAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T06:01:09.462Z" |
| | | "WhenOpened": "2025-05-19T06:01:09.462Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "WmsController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ViewState": "AgIAADsAAAAAAAAAAAAIwEMAAAAoAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:41:35.255Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "WMSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WMSHelper.cs", |
| | | "ViewState": "AgIAAMICAAAAAAAAAAAAAOgCAAAfAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T09:53:43.906Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "WCSHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\WCSHelper.cs", |
| | | "ViewState": "AgIAAK8AAAAAAAAAAAAuwLcAAAAdAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T06:26:13.784Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "ContainerHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\ContainerHelper.cs", |
| | | "ViewState": "AgIAADICAAAAAAAAAADwvzgCAAArAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T06:39:16.056Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "LocationHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\wms\\LocationHelper.cs", |
| | | "ViewState": "AgIAAN0BAAAAAAAAAAAuwPgBAACJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-28T02:42:16.796Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 9, |
| | | "Title": "OutOrderDetail.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\models\\OutOrderDetail.cs", |
| | | "ViewState": "AgIAACYAAAAAAAAAAAAYwDQAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T06:51:12.163Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "TN_Material.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\models\\TN_Material.cs", |
| | | "ViewState": "AgIAABQAAAAAAAAAAAA8wBkAAAALAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-27T06:50:41.626Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 11, |
| | | "Title": "MoboxController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\MoboxController.cs", |
| | | "ViewState": "AgIAAH8AAAAAAAAAAAAuwI8AAAAPAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-26T03:21:14.486Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 13, |
| | | "Title": "InOrder.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\models\\InOrder.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\models\\InOrder.cs", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "TaskProcess.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\process\\TaskProcess.cs", |
| | | "ViewState": "AgIAAFsAAAAAAAAAAAAqwGcAAAARAAAAAAAAAA==", |
| | | "DocumentIndex": 12, |
| | | "Title": "HttpHelper.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\util\\HttpHelper.cs", |
| | | "ViewState": "AgIAAJAAAAAAAAAAAAAuwLcAAAAZAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:42:44.641Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "WmsController.cs", |
| | | "DocumentMoniker": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeDocumentMoniker": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ToolTip": "D:\\\u6C49\u548C\u667A\u80FD\\Git-Mobox3\\\u676D\u6C27\\HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "RelativeToolTip": "HH.WCS.Mobox3.HangYang\\api\\WmsController.cs", |
| | | "ViewState": "AgIAAAUAAAAAAAAAAAAuwCsAAAAqAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-05-19T00:41:35.255Z" |
| | | "WhenOpened": "2025-05-19T08:17:19.57Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "HASeverUrl": "http://172.16.10.41", |
| | | "GZSeverUrl": "http://192.192.209.241", |
| | | |
| | | "MoboxSeverUrl": "http://192.168.1.54:5103/api/wms/", |
| | | "AppKey": "OpenInfo", |
| | | "AppSecret": "OpenInfoSecret", |
| | | |
| | | |
| | | "SqlServer": "Data Source=192.168.1.144;Initial Catalog=hyMobox;User ID=sa;Password=Am123123", |
| | | "SqlServer": "Data Source=192.168.1.247;Initial Catalog=HY_OIMobox;User ID=sa;Password=Am123123", |
| | | |
| | | "ApiPort": 7801, |
| | | "FacCode": "HY", |
| | | "WHCode": "HYCK", |
| | | "FacCode": "HYCK", |
| | | "WHCode": "CK001", |
| | | |
| | | |
| | | "ReservoirArea": [ |
| | |
| | | }, |
| | | { |
| | | "areaName": "入库接驳位", |
| | | "areaCode": "AGVJB" |
| | | "areaCode": "AGVRJB" |
| | | }, |
| | | { |
| | | "areaName": "出库接驳位", |
| | | "areaCode": "AGVCJB" |
| | | }, |
| | | { |
| | | "areaName": "托盘立库区", |
| | |
| | | { |
| | | "areaName": "料箱码盘区", |
| | | "areaCode": "SSX" |
| | | }, |
| | | { |
| | | "areaName": "拣选缓存区", |
| | | "areaCode": "JXHCQ" |
| | | } |
| | | ], |
| | | "Relevancy": [ |
| | |
| | | "OutLoc": "HTCKQ-03" |
| | | } |
| | | ], |
| | | "OutRelevancy": [ |
| | | { |
| | | "conLoc": "TPJXQ-1-01", |
| | | "sorLoc": [ "TPJXQ-1-02", "TPJXQ-1-03", "TPJXQ-1-04" ] |
| | | }, |
| | | { |
| | | "conLoc": "TPJXQ-2-01", |
| | | "sorLoc": [ "TPJXQ-2-02", "TPJXQ-2-03", "TPJXQ-2-04" ] |
| | | }, |
| | | { |
| | | "conLoc": "TPJXQ-3-01", |
| | | "sorLoc": [ "TPJXQ-3-02", "TPJXQ-3-03", "TPJXQ-3-04" ] |
| | | } |
| | | ], |
| | | |
| | | "CompleteTask": { |
| | | "taskType": [ "料箱缓存位入库", "码盘合托入库", "托盘入库", "料箱入库", "人机接驳入库", "料箱出库" ] |
| | | "taskType": [ "料箱缓存位入库", "码盘合托入库", "托盘入库", "料箱入库", "人机接驳入库", "料箱出库", "配盘出库" ] |
| | | } |
| | | |
| | | } |
| | |
| | | if (taskList.taskType.Contains(TN_Task.S_TYPE)) |
| | | { |
| | | //完成作业 |
| | | WMSHelper.UpdateWmsTask(TN_Task, 3); |
| | | WMSHelper.UpdateWmsTask(TN_Task, 2); |
| | | WMSHelper.UpdateDistributionCntrState(2, 3, TN_Task.S_CNTR_CODE); |
| | | } |
| | | WMSHelper.AddChange(TN_Task); |
| | | WMSHelper.DeleteChange(TN_Task); |
| | | if (new List<string> { "料箱入库", "托盘入库" }.Contains(TN_Task.S_TYPE)) |
| | | { |
| | | ContainerHelper.UpdateCntrItem(TN_Task.S_CNTR_CODE); |
| | | } |
| | | //if (WMSHelper.DeleteChange(TN_Task)) |
| | | //{ |
| | | // WMSHelper.AddChange(TN_Task); |
| | | //} |
| | | break; |
| | | case 7: |
| | | TaskProcess.OperateStatus(TN_Task, 7); |
| | |
| | | { |
| | | //查询任务 |
| | | //获取所有等待的作业 |
| | | var list = WMSHelper.GetWmsTaskListByState("等待"); ; |
| | | var list = WMSHelper.GetWmsTaskListByState("等待"); |
| | | if (list.Count > 0) |
| | | { |
| | | |
| | |
| | | { |
| | | //生成入库任务 |
| | | TaskProcess.CreateInTask(task); |
| | | }); |
| | | } |
| | | //查询任务 |
| | | //获取所有执行的作业 |
| | | var exelist = WMSHelper.GetWmsTaskListByState("执行"); |
| | | if (exelist.Count > 0) |
| | | { |
| | | exelist.ForEach(task => |
| | | { |
| | | //生成入库任务 |
| | | TaskProcess.exeCreateInTask(task); |
| | | }); |
| | | } |
| | | } |
| | |
| | | try |
| | | { |
| | | //查询已配盘的配盘单 |
| | | var list = WMSHelper.GetPickingListByState("配货完成"); |
| | | var list = WMSHelper.GetPickingListByState(1); |
| | | if (list.Count > 0) |
| | | { |
| | | TaskProcess.GenerateFromPicking(list); |
| | |
| | | /// 分配量,被其它 |
| | | /// </summary> |
| | | public float F_ALLOC_QTY { get; set; } |
| | | public DateTime T_INBOUND_TIME { get; set; } |
| | | |
| | | public string C_ITEM_MERGE { get; set; } = "N"; |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public string S_AREA_CODE { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否清洗(是:Y ? 否:N) |
| | | /// </summary> |
| | | public string C_CLEAN { get; set; } |
| | | |
| | | [SugarColumn(IsIgnore = true)] |
| | | [Navigate(NavigateType.OneToMany, nameof(S_NO))] |
| | | public List<OutOrderDetail> OutOrderDetail { get; set; } |
| | |
| | | /// </summary> |
| | | public string S_ERP_WH_CODE { get; set; } |
| | | |
| | | public string C_CLEAN { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | public DateTime? T_PBOM_UPDATE { get; set; } |
| | | public string C_MULTI_ROUTE { get; set; } |
| | | public string S_ROUTE_MAKE { get; set; } |
| | | public string C_CLEAN { get; set; } |
| | | public string S_ROUTE_ASSEMBLY { get; set; } |
| | | public string S_DMODE { get; set; } |
| | | public string S_STATE_PRE { get; set; } |
| | |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static HH.WCS.HangYang.api.OtherModel.Putaway_Order_In; |
| | | using static HH.WCS.HangYang.LISTA.process.HttpModel; |
| | | using static HH.WCS.HangYang.util.Settings; |
| | | using static HH.WCS.HangYang.wms.WMSHelper; |
| | | using static System.Runtime.CompilerServices.RuntimeHelpers; |
| | | |
| | |
| | | { |
| | | |
| | | LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}"); |
| | | LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_NOTE); |
| | | LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(), mst.S_NOTE); |
| | | } |
| | | |
| | | } |
| | |
| | | internal static bool Intercept(WCSTask mst) |
| | | { |
| | | var result = false; |
| | | |
| | | |
| | | return result; |
| | | } |
| | | |
| | |
| | | /// <returns></returns> |
| | | public static Result GetOutboundOrder(OutOrder model) |
| | | { |
| | | Result result = new Result() { success = false, }; |
| | | Result result = new Result() { success = false }; |
| | | try |
| | | { |
| | | if (model == null || !model.OutOrderDetail.Any()) |
| | |
| | | return result; |
| | | } |
| | | |
| | | // 第一步:设置物料属性信息 |
| | | foreach (var item in model.OutOrderDetail) |
| | | { |
| | | var itemType = WMSHelper.GetItemType(item.S_ITEM_CODE); |
| | |
| | | return result; |
| | | } |
| | | item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; |
| | | item.S_ITEM_NAME = itemType.S_ITEM_NAME; |
| | | item.S_ITEM_NAME = itemType.S_ITEM_NAME; |
| | | item.C_CLEAN = itemType.C_CLEAN; |
| | | } |
| | | |
| | | var groupedInOrders = model.OutOrderDetail |
| | | .GroupBy(detail => detail.S_EXT_ATTR1) // 按物料属性分组 |
| | | .Select((group, index) => new OutOrder |
| | | { |
| | | S_NO = $"{model.S_BS_NO}_{index + 1}", // 拼接来源单号 |
| | | S_BS_NO = model.S_BS_NO, |
| | | S_OP_TYPE = model.S_OP_TYPE, |
| | | S_NOTE = model.S_NOTE, |
| | | S_BS_TYPE = "ERP", |
| | | S_FACTORY = "HY001", |
| | | S_WH_CODE = "CK001", |
| | | S_AREA_CODE = group.Key.Equals("料箱库") ? "LXLKQ" : "TPLKQ", |
| | | OutOrderDetail = group.Select(detail => |
| | | { |
| | | // 修改 group 中的 S_IO_NO 字段为 S_NO 的值 |
| | | detail.S_OO_NO = $"{model.S_BS_NO}_{index + 1}"; |
| | | detail.S_BS_NO = model.S_BS_NO; |
| | | return detail; |
| | | }).ToList() // 分组后的明细 |
| | | }) |
| | | .ToList(); |
| | | var res = WMSHelper.CreateOrderOut(groupedInOrders); |
| | | // 第二步:先按物料属性分组,再按是否清洗分组 |
| | | var groupedOrders = model.OutOrderDetail |
| | | .GroupBy(detail => new |
| | | { |
| | | MaterialType = detail.S_EXT_ATTR1, |
| | | IsClean = detail.C_CLEAN |
| | | }) // 按物料属性和是否清洗双重分组 |
| | | .Select((group, index) => new OutOrder |
| | | { |
| | | S_NO = $"{model.S_BS_NO}_{index + 1}", |
| | | S_BS_NO = model.S_BS_NO, |
| | | S_OP_TYPE = model.S_OP_TYPE, |
| | | S_OUT_TO = model.S_OUT_TO, |
| | | S_NOTE = model.S_NOTE, |
| | | S_BS_TYPE = "ERP", |
| | | S_FACTORY = "HY001", |
| | | S_WH_CODE = "CK001", |
| | | S_AREA_CODE = group.Key.MaterialType.Equals("料箱库") ? "LXLKQ" : "TPLKQ", |
| | | C_CLEAN = group.Key.IsClean, // 添加是否清洗标记 |
| | | OutOrderDetail = group.Select(detail => |
| | | { |
| | | detail.S_OO_NO = $"{model.S_BS_NO}_{index + 1}"; |
| | | detail.S_BS_NO = model.S_BS_NO; |
| | | return detail; |
| | | }).ToList() |
| | | }) |
| | | .ToList(); |
| | | |
| | | // 第三步:调用创建出库单方法 |
| | | var res = WMSHelper.CreateOrderOut(groupedOrders); |
| | | if (res) |
| | | { |
| | | result.success = true; |
| | |
| | | result.success = false; |
| | | result.errMsg = ex.Message; |
| | | var st = new System.Diagnostics.StackTrace(ex, true); |
| | | var frame = st.GetFrame(0); // 获取第一个堆栈帧 |
| | | var frame = st.GetFrame(0); |
| | | if (frame != null) |
| | | { |
| | | LogHelper.Error($"GetInboundOrder入库单新增出现错误!!", ex); |
| | | LogHelper.Error($"GetOutboundOrder出库单新增出现错误!", ex); |
| | | LogHelper.Error($"文件名: {frame.GetFileName()}", ex); |
| | | LogHelper.Error($"行号: {frame.GetFileLineNumber()}", ex); |
| | | LogHelper.Error($"列号: {frame.GetFileColumnNumber()}", ex); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 获取作业创建入库任务 |
| | | ///// </summary> |
| | | ///// <param name="mst"></param> |
| | | ///// <returns></returns> |
| | | //internal static bool CreateInTask(WMSTask mst) |
| | | //{ |
| | | // try |
| | | // { |
| | | // var result = false; |
| | | // var taskState = mst.S_B_STATE.Trim(); |
| | | // if (taskState == "等待") |
| | | // { |
| | | // if (!string.IsNullOrEmpty(mst.S_START_LOC)) |
| | | // { |
| | | // //杭氧所有库区 |
| | | // var reservoirs = Settings.ReservoirAreas.ToList(); |
| | | // if (!reservoirs.Any() || reservoirs == null) |
| | | // { |
| | | // LogHelper.Info("Settings出现错误未查询到杭氧的库区!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // if (mst.S_TYPE == "托盘转运") |
| | | // { |
| | | // var lxAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "料箱入库缓存位").FirstOrDefault().areaCode); |
| | | // if (lxAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxAnyLoc.FirstOrDefault().S_CODE, "料箱缓存位入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("料箱缓存位入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // } |
| | | // else |
| | | // { |
| | | // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | // if (rkAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "料箱码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // //标记为合托 |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "料箱合托"); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // } |
| | | // } |
| | | // if (mst.S_TYPE == "托盘入库") |
| | | // { |
| | | // //1.查询下下库里面是否有要合托的托盘 |
| | | // var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); |
| | | // if (locMerge != null) |
| | | // { |
| | | // //(1.1)如果有要合托的托盘就去判断一下合托工位是否为空 |
| | | // var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "合托区").FirstOrDefault().areaCode); |
| | | // if (anyLoc.Any()) |
| | | // { |
| | | |
| | | // foreach (var item in anyLoc) |
| | | // { |
| | | // //生成一条出库的任务 |
| | | // var relevancys = Settings.Relevancys.Where(s => s.InLoc == item.S_CODE).FirstOrDefault(); |
| | | // if (relevancys == null) |
| | | // { |
| | | // LogHelper.Info($"Settings未查询到合托入库位{item.S_CODE}对应的出库位!", "杭氧"); |
| | | // continue; |
| | | // } |
| | | // //生成到合托区的任务 |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, item.S_CODE, "码盘合托入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘合托入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "码盘合托出库", locMerge.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘合托出库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //(1.2)如果合托工位为空就直接合托到合托工位里面,同时生成一个出库任务把被合托的托盘出出来(标记为要合托) |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // break; |
| | | // } |
| | | |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // //(1.3)如果合托工位不为空就去入库缓存区(标记为要合托) |
| | | // //生成到入库缓存区的任务 |
| | | // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | // if (rkAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // //标记为合托 |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // } |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // //2.如果没有要合托的托盘 |
| | | // var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | // if (area == null) |
| | | // { |
| | | // LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | // var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | // if (anyLoc.Any()) |
| | | // { |
| | | // //生成到接驳位的任务 |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // } |
| | | // else |
| | | // { |
| | | // //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | // //生成到入库缓存区的任务 |
| | | // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | // if (rkAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // //标记为不合托 |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | |
| | | // } |
| | | |
| | | // } |
| | | // } |
| | | // if (mst.S_TYPE == "合托回库") |
| | | // { |
| | | // var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); |
| | | // if (trayLst.Any()) |
| | | // { |
| | | // //满托回库 |
| | | // var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | // if (area == null) |
| | | // { |
| | | // LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | // var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | // if (anyLoc.Any()) |
| | | // { |
| | | // //生成到接驳位的任务 |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // } |
| | | // else |
| | | // { |
| | | // //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | // //生成到入库缓存区的任务 |
| | | // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | // if (rkAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // //标记为不合托 |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // //空托回库 |
| | | // var area = reservoirs.Where(s => s.areaName == "人机接驳位-空托位").FirstOrDefault(); |
| | | // if (area == null) |
| | | // { |
| | | // LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //(2.1)先查询人机接驳位-空托位是否为空,如果为空直接生成到入库的任务 |
| | | // var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | // if (anyLoc.Any()) |
| | | // { |
| | | // //生成到接驳位的任务 |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "人机接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // } |
| | | // else |
| | | // { |
| | | // //生成到入库缓存区的任务 |
| | | // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | // if (rkAnyLoc.Any()) |
| | | // { |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //标记为不合托 |
| | | // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // if (mst.S_TYPE == "料箱出库") |
| | | // { |
| | | |
| | | // //满托回库 |
| | | // var area = reservoirs.Where(s => s.areaName == "料箱码盘区").FirstOrDefault(); |
| | | // if (area == null) |
| | | // { |
| | | // LogHelper.Info("Settings出现错误未查询到料箱码盘区!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | // var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | // if (anyLoc.Any()) |
| | | // { |
| | | // //生成到接驳位的任务 |
| | | // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "料箱出库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | // if (!res) |
| | | // { |
| | | // LogHelper.Info("料箱出库任务创建失败!", "杭氧"); |
| | | // return false; |
| | | // } |
| | | // WMSHelper.UpdateStatus(mst, 1); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info("料箱码盘区未有可用货位!", "杭氧"); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // else { result = true; } |
| | | // return result; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // var st = new System.Diagnostics.StackTrace(ex, true); |
| | | // var frame = st.GetFrame(0); // 获取第一个堆栈帧 |
| | | // if (frame != null) |
| | | // { |
| | | // LogHelper.Error($"CreateInTask获取作业创建入库任务出现错误!!", ex); |
| | | // LogHelper.Error($"文件名: {frame.GetFileName()}", ex); |
| | | // LogHelper.Error($"行号: {frame.GetFileLineNumber()}", ex); |
| | | // LogHelper.Error($"列号: {frame.GetFileColumnNumber()}", ex); |
| | | // } |
| | | // return false; |
| | | // } |
| | | |
| | | //} |
| | | |
| | | #region 等待作业 |
| | | |
| | | /// <summary> |
| | | /// 获取作业创建入库任务 |
| | |
| | | { |
| | | try |
| | | { |
| | | var result = false; |
| | | var taskState = mst.S_B_STATE.Trim(); |
| | | if (taskState == "等待") |
| | | if (mst.S_B_STATE.Trim() != "等待") return true; |
| | | if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; |
| | | |
| | | var reservoirs = Settings.ReservoirAreas?.ToList(); |
| | | if (reservoirs == null || !reservoirs.Any()) |
| | | { |
| | | if (!string.IsNullOrEmpty(mst.S_START_LOC)) |
| | | { |
| | | //杭氧所有库区 |
| | | var reservoirs = Settings.ReservoirAreas.ToList(); |
| | | if (!reservoirs.Any() || reservoirs == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到杭氧的库区!", "杭氧"); |
| | | return false; |
| | | } |
| | | if (mst.S_TYPE == "托盘转运") |
| | | { |
| | | var lxAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "料箱入库缓存位").FirstOrDefault().areaCode); |
| | | if (lxAnyLoc.Any()) |
| | | { |
| | | |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxAnyLoc.FirstOrDefault().S_CODE, "料箱缓存位入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("料箱缓存位入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "料箱码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "料箱合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | if (mst.S_TYPE == "托盘入库") |
| | | { |
| | | //1.查询下下库里面是否有要合托的托盘 |
| | | var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); |
| | | if (locMerge != null) |
| | | { |
| | | //(1.1)如果有要合托的托盘就去判断一下合托工位是否为空 |
| | | var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "合托区").FirstOrDefault().areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | |
| | | //生成一条出库的任务 |
| | | var relevancys = Settings.Relevancys.Where(s => s.InLoc == anyLoc.FirstOrDefault().S_CODE).FirstOrDefault(); |
| | | if (relevancys == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到合托入库位对应的出库位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //生成到合托区的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘合托入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘合托入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "码盘合托出库", locMerge.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘合托出库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(1.2)如果合托工位为空就直接合托到合托工位里面,同时生成一个出库任务把被合托的托盘出出来(标记为要合托) |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //(1.3)如果合托工位不为空就去入库缓存区(标记为要合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //2.如果没有要合托的托盘 |
| | | var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (mst.S_TYPE == "合托回库") |
| | | { |
| | | var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); |
| | | if (trayLst.Any()) |
| | | { |
| | | //满托回库 |
| | | var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //空托回库 |
| | | var area = reservoirs.Where(s => s.areaName == "人机接驳位-空托位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询人机接驳位-空托位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "人机接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (mst.S_TYPE == "料箱出库") |
| | | { |
| | | |
| | | //满托回库 |
| | | var area = reservoirs.Where(s => s.areaName == "料箱码盘区").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到料箱码盘区!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "料箱出库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("料箱出库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("料箱码盘区未有可用货位!", "杭氧"); |
| | | } |
| | | } |
| | | } |
| | | LogHelper.Info("Settings出现错误未查询到杭氧的库区!", "杭氧"); |
| | | return false; |
| | | } |
| | | else { result = true; } |
| | | return result; |
| | | |
| | | switch (mst.S_TYPE) |
| | | { |
| | | case "托盘转运": |
| | | return HandlePalletTransport(mst, reservoirs); |
| | | case "托盘入库": |
| | | return HandlePalletStorage(mst, reservoirs); |
| | | case "合托回库": |
| | | return HandleMergeReturn(mst, reservoirs); |
| | | case "分拣回库": |
| | | return HandleMergeReturn(mst, reservoirs); |
| | | case "料箱出库": |
| | | return HandleBoxOutbound(mst, reservoirs); |
| | | case "发货暂存": |
| | | return PreShipmentStage(mst); |
| | | case "发货清洗": |
| | | return PreShipmentStage(mst); |
| | | case "发货装配": |
| | | return PreShipmentStage(mst); |
| | | default: |
| | | return true; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | var st = new System.Diagnostics.StackTrace(ex, true); |
| | | var frame = st.GetFrame(0); // 获取第一个堆栈帧 |
| | | if (frame != null) |
| | | LogErrorDetails(ex); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 托盘转运 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <param name="reservoirs"></param> |
| | | /// <returns></returns> |
| | | private static bool HandlePalletTransport(WMSTask mst, List<ReservoirArea> reservoirs) |
| | | { |
| | | var res = true; |
| | | var lxArea = reservoirs.FirstOrDefault(s => s.areaName == "料箱入库缓存位"); |
| | | if (lxArea != null) |
| | | { |
| | | var lxLocations = LocationHelper.GetLocAreaList(lxArea.areaCode); |
| | | if (lxLocations.Any()) |
| | | { |
| | | LogHelper.Error($"CreateInTask获取作业创建入库任务出现错误!!", ex); |
| | | LogHelper.Error($"文件名: {frame.GetFileName()}", ex); |
| | | LogHelper.Error($"行号: {frame.GetFileLineNumber()}", ex); |
| | | LogHelper.Error($"列号: {frame.GetFileColumnNumber()}", ex); |
| | | res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxLocations.FirstOrDefault().S_CODE, "料箱缓存位入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("料箱缓存位入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | } |
| | | |
| | | var rkArea = reservoirs.FirstOrDefault(s => s.areaName == "入库缓存区"); |
| | | if (rkArea == null) return false; |
| | | |
| | | var rkLocations = LocationHelper.GetLocAreaList(rkArea.areaCode); |
| | | if (!rkLocations.Any()) |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkLocations.FirstOrDefault().S_CODE, "料箱码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "料箱合托"); |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 托盘入库 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <param name="reservoirs"></param> |
| | | /// <returns></returns> |
| | | private static bool HandlePalletStorage(WMSTask mst, List<ReservoirArea> reservoirs) |
| | | { |
| | | var result = true; |
| | | var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); |
| | | if (locMerge != null) |
| | | { |
| | | //(1.1)如果有要合托的托盘就去判断一下合托工位是否为空 |
| | | var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "合托区").FirstOrDefault().areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | foreach (var item in anyLoc) |
| | | { |
| | | //生成一条出库的任务 |
| | | var relevancys = Settings.Relevancys.Where(s => s.InLoc == item.S_CODE).FirstOrDefault(); |
| | | if (relevancys == null) |
| | | { |
| | | LogHelper.Info($"Settings未查询到合托入库位{item.S_CODE}对应的出库位!", "杭氧"); |
| | | continue; |
| | | } |
| | | //生成到合托区的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, item.S_CODE, "码盘合托入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘合托入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "码盘合托出库", locMerge.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘合托出库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(1.2)如果合托工位为空就直接合托到合托工位里面,同时生成一个出库任务把被合托的托盘出出来(标记为要合托) |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //(1.3)如果合托工位不为空就去入库缓存区(标记为要合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //2.如果没有要合托的托盘 |
| | | var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 合托回库 || 分拣回库 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <param name="reservoirs"></param> |
| | | /// <returns></returns> |
| | | private static bool HandleMergeReturn(WMSTask mst, List<ReservoirArea> reservoirs) |
| | | { |
| | | var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); |
| | | if (trayLst.Any()) |
| | | { |
| | | //满托回库 |
| | | var area = reservoirs.Where(s => s.areaName == "入库接驳位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //(2.2)如果入库接驳位不为空,则生成到入库缓存区的任务(标记为不合托) |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //空托回库 |
| | | var area = reservoirs.Where(s => s.areaName == "人机接驳位-空托位").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到入库接驳位!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询人机接驳位-空托位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "人机接驳入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | //生成到入库缓存区的任务 |
| | | var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "入库缓存区").FirstOrDefault().areaCode); |
| | | if (rkAnyLoc.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "码盘缓存入库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘缓存入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | //标记为不合托 |
| | | ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "不合托"); |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("入库缓存区没有空货位!", "杭氧"); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 料箱出库 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <param name="reservoirs"></param> |
| | | /// <returns></returns> |
| | | private static bool HandleBoxOutbound(WMSTask mst, List<ReservoirArea> reservoirs) |
| | | { |
| | | var result = true; |
| | | var area = reservoirs.Where(s => s.areaName == "料箱码盘区").FirstOrDefault(); |
| | | if (area == null) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到料箱码盘区!", "杭氧"); |
| | | return false; |
| | | } |
| | | //(2.1)先查询入库接驳位是否为空,如果为空直接生成到入库的任务 |
| | | var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); |
| | | if (anyLoc.Any()) |
| | | { |
| | | //生成到接驳位的任务 |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "料箱出库", mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("料箱出库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("料箱码盘区未有可用货位!", "杭氧"); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 发货暂存 || 发货清洗 || 发货装配 (暂时使用一个方法处理) |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <returns></returns> |
| | | private static bool PreShipmentStage(WMSTask mst) |
| | | { |
| | | var locList = LocationHelper.GetLocAreaList(mst.S_END_AREA); |
| | | if (locList.Any()) |
| | | { |
| | | var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, locList.FirstOrDefault().S_CODE, mst.S_TYPE, mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info($"{mst.S_TYPE}入库任务创建失败!", "杭氧"); |
| | | return false; |
| | | } |
| | | WMSHelper.UpdateStatus(mst, 1); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 发货清洗 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <returns></returns> |
| | | private static bool OutboundCleaning(WMSTask mst) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 发货装配 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <returns></returns> |
| | | private static bool OutboundAssembly(WMSTask mst) |
| | | { |
| | | return true; |
| | | } |
| | | #endregion |
| | | |
| | | #region 执行作业 |
| | | |
| | | /// <summary> |
| | | /// 获取执行的作业创建任务 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <returns></returns> |
| | | internal static bool exeCreateInTask(WMSTask mst) |
| | | { |
| | | try |
| | | { |
| | | if (mst.S_B_STATE.Trim() != "执行") return true; |
| | | if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; |
| | | |
| | | var reservoirs = Settings.ReservoirAreas?.ToList(); |
| | | if (reservoirs == null || !reservoirs.Any()) |
| | | { |
| | | LogHelper.Info("Settings出现错误未查询到杭氧的库区!", "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | | switch (mst.S_TYPE) |
| | | { |
| | | case "配盘出库": |
| | | return PalletOutbound(mst); |
| | | default: |
| | | return true; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogErrorDetails(ex); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 配盘出库 |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | /// <param name="reservoirs"></param> |
| | | /// <returns></returns> |
| | | private static bool PalletOutbound(WMSTask mst) |
| | | { |
| | | var relevancys = Settings.OutRelevancys.Where(s => s.conLoc == mst.S_END_LOC).FirstOrDefault(); |
| | | if (relevancys == null) |
| | | { |
| | | LogHelper.Info($"Settings未查询到集货位{mst.S_END_LOC}对应的分拣位!", "杭氧"); |
| | | return false; |
| | | } |
| | | var locList = LocationHelper.GetLocListEmptyFree(relevancys.sorLoc.ToList()); |
| | | if (locList.Any()) |
| | | { |
| | | var startLoc = WMSHelper.GetCntrLoc(mst.S_CNTR_CODE); |
| | | // 创建出库任务 |
| | | var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, locList.FirstOrDefault().S_CODE, mst.S_TYPE, mst.S_CNTR_CODE, mst.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info($"根据配盘单生成出库任务创建出库任务失败!!"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 错误日志记录 |
| | | /// </summary> |
| | | /// <param name="ex">错误信息</param> |
| | | private static void LogErrorDetails(Exception ex) |
| | | { |
| | | var st = new System.Diagnostics.StackTrace(ex, true); |
| | | var frame = st.GetFrame(0); |
| | | if (frame == null) return; |
| | | |
| | | var errorDetails = new StringBuilder() |
| | | .AppendLine($"错误信息: {ex.Message}") |
| | | .AppendLine($"文件名: {frame.GetFileName()}") |
| | | .AppendLine($"行号: {frame.GetFileLineNumber()}") |
| | | .AppendLine($"列号: {frame.GetFileColumnNumber()}") |
| | | .ToString(); |
| | | |
| | | LogHelper.Error("CreateInTask获取作业创建入库任务出现错误!" + errorDetails, ex); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 循环入库缓存区查询合托工位和入库接驳位是否有空货位(创建任务) |
| | |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | |
| | | //生成一条出库的任务 |
| | | var relevancys = Settings.Relevancys.Where(s => s.InLoc == anyLoc.FirstOrDefault().S_CODE).FirstOrDefault(); |
| | | if (relevancys == null) |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | //不合托逻辑 |
| | | var noCntrAbouts = ContainerHelper.GetCntrAbouts(rkAnyLoc.areaCode, "不合托").FirstOrDefault(); |
| | | if (noCntrAbouts != null) |
| | |
| | | } |
| | | //2.2如果入库接驳位为空创建码盘接驳入库的任务 |
| | | //生成到接驳位的任务 |
| | | res = TaskProcess.HYCreateTransport(noCntrAbouts.S_LOC_CODE, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", noCntrAbouts.S_CNTR_CODE,list.S_CODE); |
| | | res = TaskProcess.HYCreateTransport(noCntrAbouts.S_LOC_CODE, anyLoc.FirstOrDefault().S_CODE, "码盘接驳入库", noCntrAbouts.S_CNTR_CODE, list.S_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info("码盘接驳入库任务创建失败!", "杭氧"); |
| | |
| | | WMSHelper.UpdateTaskStatus(list.S_CODE, 1); |
| | | ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, ""); |
| | | } |
| | | |
| | | |
| | | |
| | | result.success = true; |
| | | return result; |
| | |
| | | try |
| | | { |
| | | // 创建调度器 |
| | | var scheduler = new DoubleDeepOutboundScheduler(distributionCntr); |
| | | var scheduler = new DoubleDeepOutboundScheduler(distributionCntr); |
| | | |
| | | var listOut = new List<Outbound>(); |
| | | foreach (var item in distributionCntr) |
| | |
| | | } |
| | | // 请求出库 |
| | | var tasks = scheduler.GenerateOutboundTasks(listOut); |
| | | |
| | | foreach (var item in tasks) |
| | | { |
| | | // 创建出库任务 |
| | | var res = TaskProcess.HYCreateTransport(item.S_START_LOC, item.S_END_LOC, item.S_TYPE, item.S_CNTR_CODE, item.S_OP_CODE); |
| | | UpdateDistributionCntrState("作业中", item.S_CNTR_CODE); |
| | | if (!res) |
| | | var wmsTask = new WMSTask(); |
| | | if (string.IsNullOrEmpty(item.S_OP_CODE)) |
| | | { |
| | | LogHelper.Info($"根据配盘单生成出库任务创建出库任务失败!!"); |
| | | return false; |
| | | wmsTask = new WMSTask |
| | | { |
| | | S_CNTR_CODE = item.S_CNTR_CODE, |
| | | S_CODE = WMSHelper.GenerateTaskNo(), |
| | | S_START_LOC = item.S_START_LOC, |
| | | S_START_AREA = item.S_START_AREA, |
| | | S_END_LOC = item.S_END_LOC, |
| | | S_END_AREA = item.S_END_AREA, |
| | | S_START_WH = "CK001", |
| | | S_END_WH = "CK001", |
| | | N_B_STATE = 1, |
| | | S_B_STATE = "执行", |
| | | N_TYPE = 2, |
| | | S_TYPE = "配盘出库" |
| | | }; |
| | | if (!WMSHelper.CreateWmsTask(wmsTask)) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if (item.S_END_AREA == "LXLKQ") |
| | | { |
| | | // 创建出库任务 |
| | | var res = TaskProcess.HYCreateTransport(item.S_START_LOC, item.S_END_LOC, item.S_TYPE, item.S_CNTR_CODE, wmsTask.S_CODE); |
| | | UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info($"根据配盘单生成出库任务创建出库任务失败!!"); |
| | | return false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //根据分拣货位去查询配置,如果分拣区没有空货位就去出库分拣暂存区 |
| | | var relevancys = Settings.OutRelevancys.Where(s => s.conLoc == item.S_END_LOC).FirstOrDefault(); |
| | | if (relevancys == null) |
| | | { |
| | | LogHelper.Info($"Settings未查询到集货位{item.S_END_LOC}对应的分拣位!", "杭氧"); |
| | | break; |
| | | } |
| | | var locList = LocationHelper.GetLocListEmptyFree(relevancys.sorLoc.ToList()); |
| | | if (locList.Any()) |
| | | { |
| | | // 创建出库任务 |
| | | var res = TaskProcess.HYCreateTransport(item.S_START_LOC, locList.FirstOrDefault().S_CODE, item.S_TYPE, item.S_CNTR_CODE, wmsTask.S_CODE); |
| | | UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info($"根据配盘单生成出库任务创建出库任务失败!!"); |
| | | return false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "拣选缓存区").FirstOrDefault(); |
| | | var lxLocations = LocationHelper.GetLocAreaList(reservoirs.areaCode); |
| | | if (lxLocations.Any()) |
| | | { |
| | | // 创建出库任务 |
| | | var res = TaskProcess.HYCreateTransport(item.S_START_LOC, lxLocations.FirstOrDefault().S_CODE, "配盘缓存", item.S_CNTR_CODE, wmsTask.S_CODE); |
| | | UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); |
| | | if (!res) |
| | | { |
| | | LogHelper.Info($"根据配盘单生成出库任务创建出库任务失败!!"); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | |
| | | var frame = st.GetFrame(0); // 获取第一个堆栈帧 |
| | | if (frame != null) |
| | | { |
| | | LogHelper.Error($"根据配盘单生成出库任务!!", ex); |
| | | LogHelper.Error($"根据配盘单生成出库任务失败{ex.Message}!!", ex); |
| | | LogHelper.Error($"文件名: {frame.GetFileName()}", ex); |
| | | LogHelper.Error($"行号: {frame.GetFileLineNumber()}", ex); |
| | | LogHelper.Error($"列号: {frame.GetFileColumnNumber()}", ex); |
| | |
| | | |
| | | #endregion |
| | | |
| | | public string WebPost(string url, string postData, string cotentType = "application/json") { |
| | | #region WebHelper |
| | | public string WebPost(string url, string postData, string cotentType = "application/json") |
| | | { |
| | | Console.WriteLine(url); |
| | | WebRequest request = WebRequest.Create(url); |
| | | request.Method = "POST"; |
| | |
| | | request.ContentLength = byteArray.Length; |
| | | request.Timeout = 3000; |
| | | |
| | | try { |
| | | try |
| | | { |
| | | Stream dataStream = request.GetRequestStream(); |
| | | dataStream.Write(byteArray, 0, byteArray.Length); |
| | | dataStream.Close(); |
| | |
| | | response.Close(); |
| | | return responseFromServer; |
| | | } |
| | | catch (Exception e) { |
| | | catch (Exception e) |
| | | { |
| | | Console.WriteLine(e.Message); |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | public string WebGet(string url) { |
| | | public string WebGet(string url) |
| | | { |
| | | //using (var client = new HttpClient()) { |
| | | // //请求结果 |
| | | // string result = client.GetAsync(url).Result.Content.ReadAsStringAsync().Result; |
| | |
| | | request.Timeout = 6000; |
| | | request.Method = "GET"; |
| | | |
| | | try { |
| | | try |
| | | { |
| | | WebResponse response = request.GetResponse(); |
| | | Stream dataStream = response.GetResponseStream(); |
| | | StreamReader reader = new StreamReader(dataStream); |
| | |
| | | Console.WriteLine(responseFromServer); |
| | | return responseFromServer; |
| | | } |
| | | catch (Exception e) { |
| | | catch (Exception e) |
| | | { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | public string Get(string url, string contentType = "application/x-www-form-urlencoded") { |
| | | public string Get(string url, string contentType = "application/x-www-form-urlencoded") |
| | | { |
| | | WebRequest request = WebRequest.Create(url); |
| | | request.Method = "Get"; |
| | | request.ContentType = contentType; |
| | | StreamReader reader = null; |
| | | Stream stream = null; |
| | | WebResponse rsp = null; |
| | | try { |
| | | try |
| | | { |
| | | |
| | | rsp = request.GetResponse(); |
| | | stream = rsp.GetResponseStream(); |
| | | reader = new StreamReader(stream); |
| | | return reader.ReadToEnd(); |
| | | } |
| | | catch { |
| | | catch |
| | | { |
| | | return ""; |
| | | } |
| | | finally { |
| | | finally |
| | | { |
| | | // 释放资源 |
| | | if (reader != null) reader.Close(); |
| | | if (stream != null) stream.Close(); |
| | |
| | | |
| | | } |
| | | |
| | | public string Post(string url, string postData, string contentType = "application/json", string sessionId = "") { |
| | | public string Post(string url, string postData, string contentType = "application/json", string sessionId = "") |
| | | { |
| | | Console.WriteLine(url); |
| | | WebRequest request = WebRequest.Create(url); |
| | | request.Method = "POST"; |
| | |
| | | request.ContentType = contentType; |
| | | request.ContentLength = byteArray.Length; |
| | | request.Timeout = 3000; |
| | | if (sessionId != "") { |
| | | if (sessionId != "") |
| | | { |
| | | request.Headers.Set("ASP.NET_SessionId", sessionId); |
| | | } |
| | | StreamReader reader = null; |
| | | Stream stream = null; |
| | | WebResponse rsp = null; |
| | | try { |
| | | try |
| | | { |
| | | stream = request.GetRequestStream(); |
| | | stream.Write(byteArray, 0, byteArray.Length); |
| | | stream.Close(); |
| | |
| | | reader = new StreamReader(stream); |
| | | return reader.ReadToEnd(); |
| | | } |
| | | catch (Exception ex) { |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"{url} err={ex.Message}"); |
| | | return ""; |
| | | } |
| | | finally { |
| | | finally |
| | | { |
| | | // 释放资源 |
| | | if (reader != null) reader.Close(); |
| | | if (stream != null) stream.Close(); |
| | |
| | | } |
| | | |
| | | |
| | | public string Post(string url, Dictionary<string, string> dic) { |
| | | public string Post(string url, Dictionary<string, string> dic) |
| | | { |
| | | var param = dic.Select(a => { return string.Format("{0}={1}", a.Key, a.Value); }).ToList(); |
| | | return Post(url, string.Join("&", param), "application/x-www-form-urlencoded"); |
| | | |
| | | } |
| | | |
| | | public string PostWithCookie(string url, string sessinId) { |
| | | public string PostWithCookie(string url, string sessinId) |
| | | { |
| | | return PostWithCookie(url, "", "", sessinId); |
| | | } |
| | | public string PostWithCookie(string url, string postData, string contentType = "application/json", string sessionId = "") { |
| | | public string PostWithCookie(string url, string postData, string contentType = "application/json", string sessionId = "") |
| | | { |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); |
| | | request.Method = "POST"; |
| | | byte[] byteArray = Encoding.UTF8.GetBytes(postData); |
| | | request.ContentType = contentType; |
| | | request.ContentLength = byteArray.Length; |
| | | if (sessionId != "") { |
| | | if (sessionId != "") |
| | | { |
| | | request.CookieContainer = new CookieContainer(); |
| | | request.CookieContainer.SetCookies(new Uri("http://" + request.RequestUri.Authority), "ASP.NET_SessionId=" + sessionId); |
| | | } |
| | | StreamReader reader = null; |
| | | Stream stream = null; |
| | | WebResponse rsp = null; |
| | | try { |
| | | try |
| | | { |
| | | stream = request.GetRequestStream(); |
| | | stream.Write(byteArray, 0, byteArray.Length); |
| | | stream.Close(); |
| | |
| | | reader = new StreamReader(stream); |
| | | return reader.ReadToEnd(); |
| | | } |
| | | catch { |
| | | catch |
| | | { |
| | | return ""; |
| | | } |
| | | finally { |
| | | finally |
| | | { |
| | | // 释放资源 |
| | | if (reader != null) reader.Close(); |
| | | if (stream != null) stream.Close(); |
| | |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | public static List<ReservoirArea> ReservoirAreas { get; set; } |
| | | public static List<Relevancy> Relevancys { get; set; } |
| | | public static CompleteTask CompleteTasks { get; set; } |
| | | public static List<OutRelevancy> OutRelevancys { get; set; } |
| | | |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | CompleteTasks = JsonConvert.DeserializeObject<CompleteTask>(keyValue.Value.ToString()); |
| | | } |
| | | if (keyValue.Name == "OutRelevancy") |
| | | { |
| | | OutRelevancys = JsonConvert.DeserializeObject<List<OutRelevancy>>(keyValue.Value.ToString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | public string OutLoc { get; set; } |
| | | } |
| | | |
| | | public class OutRelevancy |
| | | { |
| | | public string conLoc { get; set; } |
| | | public string[] sorLoc { get; set; } |
| | | } |
| | | |
| | | public class CompleteTask |
| | | { |
| | | public string[] taskType { get; set; } |
| | |
| | | |
| | | return res; |
| | | } |
| | | /// <summary> |
| | | /// TN_ContainerHelper.test("4L天然水箱装6入", 50, "335ml东方树叶15入", 30); |
| | | /// </summary> |
| | | /// <param name="item1"></param> |
| | | /// <param name="qty1"></param> |
| | | /// <param name="item2"></param> |
| | | /// <param name="qty2"></param> |
| | | //internal static void test(string item1, int qty1, string item2, int qty2) { |
| | | // var db = new SqlHelper<object>().GetInstance(); |
| | | // var cntr = db.Queryable<TN_Container>().Includes(a => a.CntrItemRelList). |
| | | // Where(a => a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item1 && int.Parse(b.F_QTY) > qty1) > 0 |
| | | // && a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item2 && int.Parse(b.F_QTY) > qty2) > 0).First(); |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 判断容器是否有物料信息 |
| | |
| | | return res; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改容器物料表入库时间 |
| | | /// </summary> |
| | | /// <param name="trayCode">托盘号</param> |
| | | /// <returns></returns> |
| | | internal static bool UpdateCntrItem(string trayCode) |
| | | { |
| | | var res = false; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var model = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == trayCode).ToList(); |
| | | foreach (var item in model) |
| | | { |
| | | if (item.T_INBOUND_TIME == null) |
| | | { |
| | | item.T_INBOUND_TIME = DateTime.Now; |
| | | res = db.Updateable(item).UpdateColumns(it => new { it.T_INBOUND_TIME }).ExecuteCommand() > 0; |
| | | } |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询被标记的托盘 |
| | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据货位集合获取 没有容器 没有锁的货位 |
| | | /// </summary> |
| | | /// <param name="loc"></param> |
| | | /// <returns></returns> |
| | | internal static List<Location> GetLocListEmptyFree(List<string> loc) |
| | | { |
| | | //1.0 查货位容器表 |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var list = db.Queryable<Location>().Where(a => loc.Contains(a.S_CODE) && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE.Trim() == "无").ToList(); |
| | | return list; |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 入库锁定终点,出库锁定起点 |
| | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据货位集合获取 没有容器 没有锁的货位 |
| | | /// </summary> |
| | | /// <param name="loc"></param> |
| | | /// <returns></returns> |
| | | internal static List<Location> GetLocListEmptyFree(List<string> loc) |
| | | { |
| | | //1.0 查货位容器表 |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var list = db.Queryable<Location>().Where(a => loc.Contains(a.S_CODE) && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE.Trim() == "无").ToList(); |
| | | return list; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | #endregion |
| | |
| | | var date = DateTime.Now.ToString("yyMMdd"); |
| | | return $"TN{date}{id.ToString().PadLeft(4, '0')}"; |
| | | } |
| | | |
| | | |
| | | internal static bool UpdateStatus(WCSTask task, string status) |
| | | { |
| | | var res = false; |
| | |
| | | var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == task.S_CNTR_CODE).First(); |
| | | task.S_B_STATE = status; |
| | | task.S_NOTE = lcrList == null ? task.S_NOTE : lcrList.S_ACTION_SRC; |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE,it.S_NOTE }).ExecuteCommand(); |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.S_NOTE }).ExecuteCommand(); |
| | | return res; |
| | | } |
| | | internal static bool UpdateStatus(WCSTask task) |
| | |
| | | return task; |
| | | } |
| | | |
| | | |
| | | |
| | | internal static List<WCSTask> GetTaskBycntrcode(string no) |
| | | { |
| | | var db = new SqlHelper<WCSTask>().GetInstance(); |
| | |
| | | } |
| | | internal static bool CreateTask(string no, string from, string to, string taskType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1) |
| | | { |
| | | var whCode = Settings.WHCode; |
| | | var fromLoc = LocationHelper.GetLocation(from); |
| | | var endLoc = LocationHelper.GetLocation(to); |
| | | WCSTask TN_Task = new WCSTask() |
| | |
| | | S_CNTR_CODE = cntrInfo, |
| | | N_START_LAYER = startLayer, |
| | | N_END_LAYER = endLayer, |
| | | N_CNTR_COUNT = cntrCount |
| | | |
| | | N_CNTR_COUNT = cntrCount, |
| | | S_START_WH = whCode, |
| | | S_END_WH = whCode |
| | | }; |
| | | |
| | | return CreateTask(TN_Task); |
| | |
| | | var db = new SqlHelper<WCSTask>().GetInstance(); |
| | | if (task != null) |
| | | { |
| | | if (task.N_B_STATE == 1) |
| | | { |
| | | task.N_B_STATE = 2; |
| | | task.S_B_STATE = WCSTask.GetStateStr(task.N_B_STATE); |
| | | task.T_START_TIME = DateTime.Now; |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME }).ExecuteCommand(); |
| | | } |
| | | |
| | | task.N_B_STATE = 2; |
| | | task.S_B_STATE = WCSTask.GetStateStr(task.N_B_STATE); |
| | | task.T_START_TIME = DateTime.Now; |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME }).ExecuteCommand(); |
| | | } |
| | | } |
| | | internal static void End(WCSTask task) |
| | |
| | | internal static List<WCSTask> GetTaskListByState(string status) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | return db.Queryable<WCSTask>().Where(a => a.S_B_STATE.Trim() == status).OrderBy(s=>s.T_CREATE).ToList(); |
| | | return db.Queryable<WCSTask>().Where(a => a.S_B_STATE.Trim() == status).OrderBy(s => s.T_CREATE).ToList(); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | internal static List<WCSTask> GetTaskListByState(int state) |
| | | { |
| | |
| | | return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).ToList(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using System.Collections.Concurrent; |
| | | using System.Collections.Generic; |
| | | using System.IdentityModel.Protocols.WSTrust; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Reflection; |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("创建入库单失败", ex, "杭氧"); |
| | | var sugarEx = ex as SqlSugar.SqlSugarException; |
| | | if (sugarEx != null) |
| | | { |
| | | LogHelper.Error($"创建入库单SQL错误: {sugarEx.Sql}", sugarEx, "杭氧"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Error($"创建入库单失败:{ex.Message}", ex, "杭氧"); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("创建出库单失败", ex, "杭氧"); |
| | | LogHelper.Error($"创建出库单失败:{ex.Message}", ex, "杭氧"); |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据托盘查询货位明细 |
| | | /// </summary> |
| | | /// <param name="trayCode">托盘号</param> |
| | | /// <returns></returns> |
| | | internal static LocCntrRel GetCntrLoc(string trayCode) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | var locCntr = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == trayCode).First(); |
| | | var locList = db.Queryable<Location>().Where(p => p.S_CODE == locCntr.S_LOC_CODE |
| | | && p.N_CURRENT_NUM == p.N_CAPACITY |
| | | && p.S_LOCK_STATE.Trim() == "无" |
| | | && p.S_AREA_CODE == "JXHCQ").First(); |
| | | if (locList == null) |
| | | { |
| | | return null; |
| | | } |
| | | return locCntr; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 任务状态转换 |
| | | /// </summary> |
| | | /// <param name="state">状态号</param> |
| | |
| | | /// </summary> |
| | | /// <param name="state">配盘单状态</param> |
| | | /// <returns></returns> |
| | | internal static List<DistributionCntr> GetPickingListByState(string state) |
| | | internal static List<DistributionCntr> GetPickingListByState(int state) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.S_B_STATE.Trim() == state).ToList(); |
| | | var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.N_B_STATE == state).ToList(); |
| | | return distributionCntr; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 配盘单状态转换 |
| | | /// </summary> |
| | | /// <param name="state">状态号</param> |
| | | /// <returns></returns> |
| | | internal static string GetDistributionStateStr(int state) |
| | | { |
| | | var status = ""; |
| | | switch (state) |
| | | { |
| | | case 1: status = "已配货"; break; |
| | | case 2: status = "出库中"; break; |
| | | case 3: status = "已出库"; break; |
| | | case 4: status = "分拣完成 "; break; |
| | | |
| | | } |
| | | return status; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改配盘单状态 |
| | | /// </summary> |
| | | /// <param name="taskState">作业状态</param> |
| | | /// <param name="state">状态</param> |
| | | /// <param name="trayCode">托盘号</param> |
| | | /// <returns></returns> |
| | | internal static bool UpdateDistributionCntrState(string state,string trayCode) |
| | | internal static bool UpdateDistributionCntrState(int taskState,int state,string trayCode) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.S_B_STATE.Trim() == "配货完成" && a.S_CNTR_CODE == trayCode ).First(); |
| | | var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.N_B_STATE == taskState && a.S_CNTR_CODE == trayCode ).First(); |
| | | if (distributionCntr != null) |
| | | { |
| | | |
| | | distributionCntr.S_B_STATE = state; |
| | | distributionCntr.N_B_STATE = 2; |
| | | distributionCntr.N_B_STATE = state; |
| | | distributionCntr.S_B_STATE = GetDistributionStateStr(state); |
| | | return db.Updateable<DistributionCntr>(distributionCntr).UpdateColumns(it => new { it.S_B_STATE, it.N_B_STATE }).ExecuteCommand() > 0; |
| | | } |
| | | return false; |
| | |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var locations = db.Queryable<Location>().Where(a => a.S_AREA_CODE == inbound.areaCode).ToList(); |
| | | if(!string.IsNullOrEmpty(inbound.roadWay.ToString())) |
| | | if(inbound.roadWay != 0) |
| | | { |
| | | locations.RemoveAll(s => s.N_ROADWAY != inbound.roadWay); |
| | | } |
| | |
| | | else continue; |
| | | |
| | | } |
| | | else |
| | | { |
| | | //货位为空直接生成出库任务 |
| | | tasks.Add(CreateOutboundTask(targetLoc,outboundItem)); |
| | | } |
| | | //else |
| | | //{ |
| | | // //货位为空直接生成出库任务 |
| | | // tasks.Add(CreateOutboundTask(targetLoc, outboundItem)); |
| | | //} |
| | | } |
| | | else continue; |
| | | |
| | | else |
| | | { |
| | | continue; |
| | | } |
| | | // 2.2 生成出库任务(深位) |
| | | tasks.Add(CreateOutboundTask(targetLoc, outboundItem)); |
| | | } |
| | |
| | | // 3. 非双深位直接出库 |
| | | tasks.Add(CreateOutboundTask(targetLoc, outboundItem)); |
| | | } |
| | | break; |
| | | } |
| | | // 4. 任务排序:移库任务优先 + 高优先级优先 |
| | | return tasks; |
| | |
| | | loc.N_ROADWAY == deepLoc.N_ROADWAY && |
| | | loc.N_COL == deepLoc.N_COL && |
| | | loc.N_LAYER == deepLoc.N_LAYER && |
| | | loc.N_LOCK_STATE == 0 |
| | | loc.N_LOCK_STATE == 0 || loc.N_LOCK_STATE == 5 |
| | | ); |
| | | |
| | | private Location FindBestRelocationTarget(Location outerLoc) |
| | |
| | | _allLocations |
| | | .Where(x => x.S_CODE == outerLoc.S_CODE) |
| | | .ToList() |
| | | .ForEach(x => x.N_LOCK_STATE = 3); |
| | | .ForEach(x => x.N_LOCK_STATE = 5); |
| | | //标记深位的外侧货位为5 |
| | | } |
| | | } |
| | | } |
| | |
| | | /// 根据任务升量 |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | internal static void AddChange(WCSTask task) |
| | | internal static bool AddChange(WCSTask task) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = true; |
| | |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error($"仓库升量异常 异常信息={ex.Message}", ex); |
| | | result = false; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据任务降量 |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | internal static void DeleteChange(WCSTask task) |
| | | internal static bool DeleteChange(WCSTask wmstask) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = true; |
| | | try |
| | | { |
| | | var wmstask = db.Queryable<WMSTask>().Where(a => a.S_CODE == task.S_OP_CODE).First(); |
| | | //var wmstask = db.Queryable<WCSTask>().Where(a => a == task.S_OP_CODE).First(); |
| | | if (wmstask != null) |
| | | { |
| | | var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList(); |
| | | var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == wmstask.S_CNTR_CODE).ToList(); |
| | | if (itemlist.Count > 0) |
| | | { |
| | | var url = Settings.MoboxSeverUrl + "inventory/AddChange"; |
| | | //仓库量表升量 |
| | | var req = new AddChangeModel { op_type = 4 }; |
| | | //库区量表升量 |
| | | var req2 = new AddChangeModel { op_type = 7 }; |
| | | //仓库量表降量 |
| | | var req = new AddChangeModel { op_type = 8 }; |
| | | //库区量表降量 |
| | | var req2 = new AddChangeModel { op_type = 9 }; |
| | | itemlist.ForEach(a => |
| | | { |
| | | LogHelper.Info($"填充数据"); |
| | | LogHelper.Info($"减仓库量表数据 仓库{task.S_END_WH} 物料编码{a.S_ITEM_CODE} 物料名称{a.S_ITEM_NAME} 数量{a.F_QTY}"); |
| | | LogHelper.Info($"减仓库量表数据 仓库{wmstask.S_START_WH} 物料编码{a.S_ITEM_CODE} 物料名称{a.S_ITEM_NAME} 数量{a.F_QTY}"); |
| | | req.item_info.Add(new AddChangeModel.itemModel |
| | | { |
| | | wh_code = wmstask.S_START_WH, |
| | |
| | | item_name = a.S_ITEM_NAME, |
| | | qty = a.F_QTY |
| | | }); |
| | | LogHelper.Info($"减库区量表数据 库区{task.S_END_AREA} 物料编码{a.S_ITEM_CODE} 物料名称{a.S_ITEM_NAME} 数量{a.F_QTY}"); |
| | | LogHelper.Info($"减库区量表数据 库区{wmstask.S_START_AREA} 物料编码{a.S_ITEM_CODE} 物料名称{a.S_ITEM_NAME} 数量{a.F_QTY}"); |
| | | req2.item_info.Add(new AddChangeModel.itemModel |
| | | { |
| | | wh_code = wmstask.S_START_WH, |
| | |
| | | } |
| | | |
| | | } |
| | | else LogHelper.Info($"托盘{task.S_CNTR_CODE} 在容器货品明细中找不到数据"); |
| | | else LogHelper.Info($"托盘{wmstask.S_CNTR_CODE} 在容器货品明细中找不到数据"); |
| | | } |
| | | else LogHelper.Info($"未找到任务{task.S_CODE} 对应的作业"); |
| | | else LogHelper.Info($"未找到任务{wmstask.S_CODE} 对应的任务"); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error($"仓库降量异常 异常信息={ex.Message}", ex); |
| | | result = false; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |