pengmn
2025-05-28 382c009ba2bb04374468e9584f262d6682841d9b
杭氧测试流程
2个文件已添加
15个文件已修改
2088 ■■■■ 已修改文件
.vs/HH.WCS.Mobox3/FileContentIndex/54e4b3c3-52ad-42b4-854a-16918d69ff07.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3/FileContentIndex/776e4f3b-874b-4552-bab6-b11e722d4f6b.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3/v17/DocumentLayout.backup.json 237 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3/v17/DocumentLayout.json 237 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/config/config.json 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/core/WCSCore.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/models/CntrItemDetail.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/models/OutOrder.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/models/OutOrderDetail.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/models/TN_Material.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/process/TaskProcess.cs 1243 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/util/HttpHelper.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/util/Settings.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/wms/LocationHelper.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/wms/WCSHelper.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3/FileContentIndex/54e4b3c3-52ad-42b4-854a-16918d69ff07.vsidx
Binary files differ
.vs/HH.WCS.Mobox3/FileContentIndex/776e4f3b-874b-4552-bab6-b11e722d4f6b.vsidx
Binary files differ
.vs/HH.WCS.Mobox3/v17/DocumentLayout.backup.json
@@ -3,19 +3,7 @@
  "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}"
    },
    {
@@ -23,12 +11,48 @@
      "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}",
@@ -42,7 +66,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 4,
          "SelectedChildIndex": 7,
          "Children": [
            {
              "$type": "Bookmark",
@@ -60,64 +84,157 @@
              "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",
@@ -129,27 +246,15 @@
            },
            {
              "$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"
            }
          ]
        }
.vs/HH.WCS.Mobox3/v17/DocumentLayout.json
@@ -3,19 +3,7 @@
  "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}"
    },
    {
@@ -23,12 +11,48 @@
      "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}",
@@ -42,7 +66,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 4,
          "SelectedChildIndex": 7,
          "Children": [
            {
              "$type": "Bookmark",
@@ -60,64 +84,157 @@
              "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",
@@ -129,27 +246,15 @@
            },
            {
              "$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"
            }
          ]
        }
HH.WCS.Mobox3.HangYang/config/config.json
@@ -3,13 +3,16 @@
  "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": [
@@ -23,7 +26,11 @@
    },
    {
      "areaName": "入库接驳位",
      "areaCode": "AGVJB"
      "areaCode": "AGVRJB"
    },
    {
      "areaName": "出库接驳位",
      "areaCode": "AGVCJB"
    },
    {
      "areaName": "托盘立库区",
@@ -36,6 +43,10 @@
    {
      "areaName": "料箱码盘区",
      "areaCode": "SSX"
    },
    {
      "areaName": "拣选缓存区",
      "areaCode": "JXHCQ"
    }
  ],
  "Relevancy": [
@@ -52,8 +63,23 @@
      "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": [ "料箱缓存位入库", "码盘合托入库", "托盘入库", "料箱入库", "人机接驳入库", "料箱出库", "配盘出库" ]
  }
}
HH.WCS.Mobox3.HangYang/core/WCSCore.cs
@@ -48,10 +48,17 @@
                            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);
@@ -94,7 +101,7 @@
            {
                //查询任务
                //获取所有等待的作业
                var list = WMSHelper.GetWmsTaskListByState("等待"); ;
                var list = WMSHelper.GetWmsTaskListByState("等待");
                if (list.Count > 0)
                {
@@ -102,6 +109,17 @@
                    {
                        //生成入库任务
                        TaskProcess.CreateInTask(task);
                    });
                }
                //查询任务
                //获取所有执行的作业
                var exelist = WMSHelper.GetWmsTaskListByState("执行");
                if (exelist.Count > 0)
                {
                    exelist.ForEach(task =>
                    {
                        //生成入库任务
                        TaskProcess.exeCreateInTask(task);
                    });
                }
            }
@@ -158,7 +176,7 @@
            try
            {
                //查询已配盘的配盘单
                var list = WMSHelper.GetPickingListByState("配货完成");
                var list = WMSHelper.GetPickingListByState(1);
                if (list.Count > 0)
                {
                    TaskProcess.GenerateFromPicking(list);
HH.WCS.Mobox3.HangYang/models/CntrItemDetail.cs
@@ -38,6 +38,8 @@
        /// 分配量,被其它
        /// </summary>
        public float F_ALLOC_QTY { get; set; }
        public DateTime T_INBOUND_TIME { get; set; }
        public string C_ITEM_MERGE { get; set; } = "N";
        /// <summary>
HH.WCS.Mobox3.HangYang/models/OutOrder.cs
@@ -66,6 +66,11 @@
        /// </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; }
HH.WCS.Mobox3.HangYang/models/OutOrderDetail.cs
@@ -51,5 +51,7 @@
        /// </summary>
        public string S_ERP_WH_CODE { get; set; }
        public string C_CLEAN { get; set; }
    }
}
HH.WCS.Mobox3.HangYang/models/TN_Material.cs
@@ -24,6 +24,7 @@
        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; }
HH.WCS.Mobox3.HangYang/process/TaskProcess.cs
@@ -15,9 +15,11 @@
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;
@@ -45,7 +47,7 @@
            {
                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);
            }
        }
@@ -84,7 +86,7 @@
        internal static bool Intercept(WCSTask mst)
        {
            var result = false;
            return result;
        }
@@ -521,7 +523,7 @@
        /// <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())
@@ -530,6 +532,7 @@
                    return result;
                }
                // 第一步:设置物料属性信息
                foreach (var item in model.OutOrderDetail)
                {
                    var itemType = WMSHelper.GetItemType(item.S_ITEM_CODE);
@@ -539,31 +542,40 @@
                        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;
@@ -575,18 +587,337 @@
                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>
        /// 获取作业创建入库任务
@@ -597,310 +928,488 @@
        {
            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>
        /// 循环入库缓存区查询合托工位和入库接驳位是否有空货位(创建任务)
@@ -950,7 +1459,7 @@
                            {
                                return false;
                            }
                            //生成一条出库的任务
                            var relevancys = Settings.Relevancys.Where(s => s.InLoc == anyLoc.FirstOrDefault().S_CODE).FirstOrDefault();
                            if (relevancys == null)
@@ -979,7 +1488,7 @@
                        return false;
                    }
                }
                //不合托逻辑
                var noCntrAbouts = ContainerHelper.GetCntrAbouts(rkAnyLoc.areaCode, "不合托").FirstOrDefault();
                if (noCntrAbouts != null)
@@ -999,7 +1508,7 @@
                            }
                            //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("码盘接驳入库任务创建失败!", "杭氧");
@@ -1120,7 +1629,7 @@
                    WMSHelper.UpdateTaskStatus(list.S_CODE, 1);
                    ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, "");
                }
                result.success = true;
                return result;
@@ -1152,7 +1661,7 @@
            try
            {
                // 创建调度器
                var scheduler =  new DoubleDeepOutboundScheduler(distributionCntr);
                var scheduler = new DoubleDeepOutboundScheduler(distributionCntr);
                var listOut = new List<Outbound>();
                foreach (var item in distributionCntr)
@@ -1169,15 +1678,81 @@
                }
                // 请求出库
                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;
@@ -1188,7 +1763,7 @@
                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);
HH.WCS.Mobox3.HangYang/util/HttpHelper.cs
@@ -54,7 +54,9 @@
        #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";
@@ -64,7 +66,8 @@
            request.ContentLength = byteArray.Length;
            request.Timeout = 3000;
            try {
            try
            {
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
@@ -78,13 +81,15 @@
                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;
@@ -98,7 +103,8 @@
            request.Timeout = 6000;
            request.Method = "GET";
            try {
            try
            {
                WebResponse response = request.GetResponse();
                Stream dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
@@ -110,29 +116,34 @@
                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();
@@ -141,7 +152,8 @@
        }
        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";
@@ -149,13 +161,15 @@
            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();
@@ -164,11 +178,13 @@
                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();
@@ -178,29 +194,34 @@
        }
        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();
@@ -209,10 +230,12 @@
                reader = new StreamReader(stream);
                return reader.ReadToEnd();
            }
            catch {
            catch
            {
                return "";
            }
            finally {
            finally
            {
                // 释放资源
                if (reader != null) reader.Close();
                if (stream != null) stream.Close();
@@ -220,6 +243,8 @@
            }
        }
        #endregion
    }
HH.WCS.Mobox3.HangYang/util/Settings.cs
@@ -30,6 +30,8 @@
        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
@@ -124,6 +126,10 @@
                            {
                                CompleteTasks = JsonConvert.DeserializeObject<CompleteTask>(keyValue.Value.ToString());
                            }
                            if (keyValue.Name == "OutRelevancy")
                            {
                                OutRelevancys = JsonConvert.DeserializeObject<List<OutRelevancy>>(keyValue.Value.ToString());
                            }
                        }
                    }
                }
@@ -178,6 +184,12 @@
            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; }
HH.WCS.Mobox3.HangYang/wms/ContainerHelper.cs
@@ -138,19 +138,6 @@
            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>
        /// 判断容器是否有物料信息
@@ -574,6 +561,27 @@
            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>
        /// 查询被标记的托盘
HH.WCS.Mobox3.HangYang/wms/LocationHelper.cs
@@ -319,19 +319,7 @@
        }
        /// <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>
        /// 入库锁定终点,出库锁定起点
@@ -505,10 +493,21 @@
        }
        /// <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
HH.WCS.Mobox3.HangYang/wms/WCSHelper.cs
@@ -16,7 +16,7 @@
            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;
@@ -24,7 +24,7 @@
            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)
@@ -61,7 +61,7 @@
            return task;
        }
        internal static List<WCSTask> GetTaskBycntrcode(string no)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
@@ -93,6 +93,7 @@
        }
        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()
@@ -111,8 +112,9 @@
                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);
@@ -181,14 +183,10 @@
            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)
@@ -236,11 +234,11 @@
        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)
        {
@@ -253,6 +251,6 @@
            return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).ToList();
        }
    }
}
HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs
@@ -11,6 +11,7 @@
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;
@@ -635,7 +636,15 @@
            }
            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;
            }
@@ -664,7 +673,7 @@
            }
            catch (Exception ex)
            {
                LogHelper.Error("创建出库单失败", ex, "杭氧");
                LogHelper.Error($"创建出库单失败:{ex.Message}", ex, "杭氧");
                return false;
            }
@@ -730,6 +739,28 @@
        }
        /// <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>
@@ -755,28 +786,48 @@
        /// </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;
@@ -888,7 +939,7 @@
            {
                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);
                }
@@ -1129,14 +1180,16 @@
                                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));
                    }
@@ -1145,6 +1198,7 @@
                        // 3. 非双深位直接出库
                        tasks.Add(CreateOutboundTask(targetLoc, outboundItem));
                    }
                    break;
                }
                // 4. 任务排序:移库任务优先 + 高优先级优先
                return tasks;
@@ -1164,7 +1218,7 @@
                    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)
@@ -1232,7 +1286,8 @@
                            _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
                        }
                    }
                }
@@ -1263,7 +1318,7 @@
        /// 根据任务升量
        /// </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;
@@ -1349,34 +1404,36 @@
            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,
@@ -1384,7 +1441,7 @@
                                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,
@@ -1440,15 +1497,17 @@
                        }
                    }
                    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;
        }