海波 张
2 小时以前 61ece19b5b178d1b23bed16c733b01af1185f838
0720
9个文件已修改
1184 ■■■■ 已修改文件
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json 493 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/MoboxController.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WcsController.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/Monitor.cs 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dispatch/WcsTask.cs 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
process/TaskProcess.cs 415 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/LogHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/LocationHelper.cs 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/TaskHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json
@@ -3,48 +3,44 @@
  "WorkspaceRootPath": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|c:\\users\\29562\\source\\repos\\hh-0129_zhongcejintan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|c:\\users\\29562\\source\\repos\\hh-0129_zhongcejintan\\core\\monitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\monitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\monitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\monitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\wcscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\wcscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\taskhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\taskhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\moboxcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -55,82 +51,68 @@
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\loghelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\deviceprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\deviceprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\containerhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\startup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\startup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\gzrobot.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\gzrobot.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\ndcapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\ndcapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\topsdk.dll||{177559E0-D141-11D0-92DF-00A0C9138C45}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\topsdk.dll||{177559E0-D141-11D0-92DF-00A0C9138C45}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\stattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\stattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
    {
      "Orientation": 1,
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedHeight": 387,
          "SelectedChildIndex": 3,
          "DockedWidth": 200,
          "SelectedChildIndex": 4,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
              "$type": "Document",
              "DocumentIndex": 8,
              "Title": "LocationHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
              "RelativeDocumentMoniker": "wms\\LocationHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
              "RelativeToolTip": "wms\\LocationHelper.cs",
              "ViewState": "AQIAAJsAAAAAAAAAAAAnwLcAAAAxAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-19T07:28:38.256Z"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "Monitor.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
              "RelativeDocumentMoniker": "core\\Monitor.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
              "RelativeToolTip": "core\\Monitor.cs",
              "ViewState": "AQIAAPgAAAAAAAAAAAArwCYBAAAwAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-19T07:16:20.278Z",
              "EditorCaption": ""
            },
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
              "$type": "Document",
              "DocumentIndex": 11,
              "Title": "LogHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\LogHelper.cs",
              "RelativeDocumentMoniker": "util\\LogHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\LogHelper.cs",
              "RelativeToolTip": "util\\LogHelper.cs",
              "ViewState": "AQIAADYAAAAAAAAAAAAQwFcAAABlAQAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-19T07:07:37.009Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "TaskHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
              "RelativeDocumentMoniker": "wms\\TaskHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
              "RelativeToolTip": "wms\\TaskHelper.cs",
              "ViewState": "AQIAABcDAAAAAAAAAAArwDgDAAAsAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-19T06:18:06.875Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
@@ -140,87 +122,9 @@
              "RelativeDocumentMoniker": "process\\TaskProcess.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
              "RelativeToolTip": "process\\TaskProcess.cs",
              "ViewState": "AgIAAGwHAAAAAAAAAADgv4IHAAA1AAAAAAAAAA==",
              "ViewState": "AQIAAD0AAAAAAAAAAAAnwG4AAAAlAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T00:45:23.095Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "Monitor.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
              "RelativeDocumentMoniker": "core\\Monitor.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
              "RelativeToolTip": "core\\Monitor.cs",
              "ViewState": "AgIAAKYAAAAAAAAAAAAkwL4AAAA9AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-14T02:11:55.478Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "WcsController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WcsController.cs",
              "RelativeDocumentMoniker": "api\\WcsController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WcsController.cs",
              "RelativeToolTip": "api\\WcsController.cs",
              "ViewState": "AgIAAEwAAAAAAAAAAAAkwFgAAAAmAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-30T05:56:36.418Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "Title": "TaskHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
              "RelativeDocumentMoniker": "wms\\TaskHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
              "RelativeToolTip": "wms\\TaskHelper.cs",
              "ViewState": "AgIAACUAAAAAAAAAAIAywDkAAAAgAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-14T02:35:57.671Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "WmsController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
              "RelativeDocumentMoniker": "api\\WmsController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
              "RelativeToolTip": "api\\WmsController.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAACAAAAAoAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:08.931Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "LocationHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
              "RelativeDocumentMoniker": "wms\\LocationHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
              "RelativeToolTip": "wms\\LocationHelper.cs",
              "ViewState": "AgIAACEBAAAAAAAAAAAtwKYBAAAlAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:13:15.283Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "WMSModel.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
              "RelativeDocumentMoniker": "wms\\WMSModel.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
              "RelativeToolTip": "wms\\WMSModel.cs",
              "ViewState": "AgIAALYBAAAAAAAAAADgv8gBAAAWAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:05.064Z",
              "WhenOpened": "2025-07-19T06:17:33.794Z",
              "EditorCaption": ""
            },
            {
@@ -231,243 +135,98 @@
              "RelativeDocumentMoniker": "dispatch\\WcsTask.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
              "RelativeToolTip": "dispatch\\WcsTask.cs",
              "ViewState": "AgIAAEoAAAAAAAAAAAAhwCQAAAAbAAAAAAAAAA==",
              "ViewState": "AQIAAFsCAAAAAAAAAAAAAFsCAAA6AAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:19:48.409Z",
              "WhenOpened": "2025-07-19T05:57:16.784Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "Title": "ApiModel.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
              "RelativeDocumentMoniker": "api\\ApiModel.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
              "RelativeToolTip": "api\\ApiModel.cs",
              "ViewState": "AgIAABIDAAAAAAAAAAAhwCgDAAAaAAAAAAAAAA==",
              "DocumentIndex": 4,
              "Title": "WcsController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WcsController.cs",
              "RelativeDocumentMoniker": "api\\WcsController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WcsController.cs",
              "RelativeToolTip": "api\\WcsController.cs",
              "ViewState": "AQIAAAkAAAAAAAAAAADgvxwAAAAoAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-14T02:39:17.635Z",
              "WhenOpened": "2025-07-19T05:57:10.112Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "config.json",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json",
              "RelativeDocumentMoniker": "config\\config.json",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json",
              "RelativeToolTip": "config\\config.json",
              "ViewState": "AgIAAEsAAAAAAAAAAAAAAAgAAAApAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2025-05-13T02:21:47.086Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "MoboxController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\MoboxController.cs",
              "RelativeDocumentMoniker": "api\\MoboxController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\MoboxController.cs",
              "RelativeToolTip": "api\\MoboxController.cs",
              "ViewState": "AgIAADEAAAAAAAAAAAAuwM0AAAAJAAAAAAAAAA==",
              "DocumentIndex": 7,
              "Title": "WMSModel.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
              "RelativeDocumentMoniker": "wms\\WMSModel.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
              "RelativeToolTip": "wms\\WMSModel.cs",
              "ViewState": "AQIAAPYCAAAAAAAAAAArwBQDAAAqAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-20T00:59:46.638Z",
              "WhenOpened": "2025-06-13T11:06:05.595Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 2,
              "Title": "TaskCore.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
              "RelativeDocumentMoniker": "core\\TaskCore.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
              "RelativeToolTip": "core\\TaskCore.cs",
              "ViewState": "AgIAAIcAAAAAAAAAAAAhwJQAAAAoAAAAAAAAAA==",
              "ViewState": "AQIAAF4AAAAAAAAAAAAAwHoAAAAoAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T01:45:08.835Z",
              "WhenOpened": "2025-06-13T11:06:02.634Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "WmsController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
              "RelativeDocumentMoniker": "api\\WmsController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
              "RelativeToolTip": "api\\WmsController.cs",
              "ViewState": "AQIAAAYAAAAAAAAAAADwvyAAAAAmAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-13T11:05:16.48Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "MoboxController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\MoboxController.cs",
              "RelativeDocumentMoniker": "api\\MoboxController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\MoboxController.cs",
              "RelativeToolTip": "api\\MoboxController.cs",
              "ViewState": "AQIAAEMAAAAAAAAAAAAmwGoAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-13T11:05:15.607Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "ApiModel.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
              "RelativeDocumentMoniker": "api\\ApiModel.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
              "RelativeToolTip": "api\\ApiModel.cs",
              "ViewState": "AQIAAKYBAAAAAAAAAAAhwL8BAAAkAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-13T11:05:13.549Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "Title": "LogHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\LogHelper.cs",
              "RelativeDocumentMoniker": "util\\LogHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\LogHelper.cs",
              "RelativeToolTip": "util\\LogHelper.cs",
              "ViewState": "AgIAADcAAAAAAAAAAAAnwFcAAABnAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T07:39:06.007Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "Title": "WMSHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSHelper.cs",
              "RelativeDocumentMoniker": "wms\\WMSHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSHelper.cs",
              "RelativeToolTip": "wms\\WMSHelper.cs",
              "ViewState": "AgIAAA8AAAAAAAAAAAASwCMAAAAdAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-23T00:51:59.167Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 14,
              "Title": "DeviceProcess.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\DeviceProcess.cs",
              "RelativeDocumentMoniker": "process\\DeviceProcess.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\DeviceProcess.cs",
              "RelativeToolTip": "process\\DeviceProcess.cs",
              "ViewState": "AgIAAJAAAAAAAAAAAAAlwKQAAAB5AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:22:54.115Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 15,
              "Title": "ContainerHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\ContainerHelper.cs",
              "RelativeDocumentMoniker": "wms\\ContainerHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\ContainerHelper.cs",
              "RelativeToolTip": "wms\\ContainerHelper.cs",
              "ViewState": "AgIAAC8AAAAAAAAAAAAlwDoAAAARAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-23T09:31:28.026Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 16,
              "Title": "Settings.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\Settings.cs",
              "RelativeDocumentMoniker": "util\\Settings.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\Settings.cs",
              "RelativeToolTip": "util\\Settings.cs",
              "ViewState": "AgIAAAYAAAAAAAAAAAAhwBwAAAAmAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-22T02:36:21.595Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 18,
              "Title": "Startup.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\Startup.cs",
              "RelativeDocumentMoniker": "api\\Startup.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\Startup.cs",
              "RelativeToolTip": "api\\Startup.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAeAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-30T00:50:07.591Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 17,
              "Title": "AgvController.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\AgvController.cs",
              "RelativeDocumentMoniker": "api\\AgvController.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\AgvController.cs",
              "RelativeToolTip": "api\\AgvController.cs",
              "ViewState": "AgIAAAEAAAAAAAAAAAASwBoAAAAiAAAAAAAAAA==",
              "ViewState": "AQIAABQAAAAAAAAAAAAAwAAAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T03:17:31.542Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 19,
              "Title": "WcsModel.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
              "RelativeDocumentMoniker": "wms\\WcsModel.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
              "RelativeToolTip": "wms\\WcsModel.cs",
              "ViewState": "AgIAAGkAAAAAAAAAAAASwHEAAAAVAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-14T06:24:55.849Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 20,
              "Title": "HttpHelper.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\HttpHelper.cs",
              "RelativeDocumentMoniker": "util\\HttpHelper.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\HttpHelper.cs",
              "RelativeToolTip": "util\\HttpHelper.cs",
              "ViewState": "AgIAAKMAAAAAAAAAAAAhwK0AAAAWAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-24T08:21:19.702Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 21,
              "Title": "Program.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\Program.cs",
              "RelativeDocumentMoniker": "Program.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\Program.cs",
              "RelativeToolTip": "Program.cs",
              "ViewState": "AgIAABAAAAAAAAAAAAAewF0AAAAqAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-14T08:30:12.949Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 22,
              "Title": "GZRobot.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\GZRobot.cs",
              "RelativeDocumentMoniker": "dispatch\\GZRobot.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\GZRobot.cs",
              "RelativeToolTip": "dispatch\\GZRobot.cs",
              "ViewState": "AgIAACoBAAAAAAAAAAArwEoBAAAZAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-12T05:54:01.617Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 23,
              "Title": "NDCApi.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\NDCApi.cs",
              "RelativeDocumentMoniker": "dispatch\\NDCApi.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\NDCApi.cs",
              "RelativeToolTip": "dispatch\\NDCApi.cs",
              "ViewState": "AgIAAJEAAAAAAAAAAIA0wKMAAAAkAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-27T06:31:46.399Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 24,
              "Title": "TopSdk.dll",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\TopSdk.dll",
              "RelativeDocumentMoniker": "util\\TopSdk.dll",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\TopSdk.dll",
              "RelativeToolTip": "util\\TopSdk.dll",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001697|",
              "WhenOpened": "2025-06-23T01:24:38.765Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 25,
              "Title": "STAttribute.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\STAttribute.cs",
              "RelativeDocumentMoniker": "util\\STAttribute.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\STAttribute.cs",
              "RelativeToolTip": "util\\STAttribute.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-23T01:24:23.953Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 26,
              "Title": "DingTalk.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
              "RelativeDocumentMoniker": "util\\DingTalk.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
              "RelativeToolTip": "util\\DingTalk.cs",
              "ViewState": "AgIAAFQBAAAAAAAAAAAswGsBAAAPAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-19T06:20:50.133Z"
              "WhenOpened": "2025-06-13T11:04:05.322Z"
            }
          ]
        }
api/MoboxController.cs
@@ -61,7 +61,7 @@
            return result;
        }
        internal static Result cancelTask1(cancleTaskParme model)
        internal static Result cancelTask1(MoboxTaskBase model)
        {
            var result = new Result();
            LogHelper.Info("cancelTask1取消任务信息:" + JsonConvert.SerializeObject(model), "取消");
@@ -75,9 +75,9 @@
            try
            {
                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
                var task = TaskHelper.GetTaskByWorkNo(model.TaskNo, "agv");
                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs");
                var wcsTask = TaskHelper.GetTaskByWorkNo(model.TaskNo, "wcs");
                if (task != null)
                {
@@ -141,8 +141,9 @@
                else
                {
                    result.errCode = 1;
                    result.errMsg = $"{model.task_no}任务不存在";
                    result.errMsg = $"{model.TaskNo}任务不存在";
                    result.success = false;
                    return result;
                }
                if (wcsTask != null)
api/WcsController.cs
@@ -78,16 +78,30 @@
        /// <summary>
        /// Wcs放货有货 需要改道  取货无货 取消任务
        /// Wcs放货有货 需要改道
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("api/ZcInChangeBit")]
        public WcsWarningReurn ZcInChangeBit(changeBitParme model)
        {
            LogHelper.Info("ZcInChangeBit 放货有货或取货无货参数:" + JsonConvert.SerializeObject(model), "放货有货");
            LogHelper.Info("ZcInChangeBit 放货有货参数:" + JsonConvert.SerializeObject(model), "放货有货");
            var res = WcsTask.ZcInChangeBit(model);
            LogHelper.Info("ZcInChangeBit 放货有货或取货无货返回:" + JsonConvert.SerializeObject(res), "放货有货");
            LogHelper.Info("ZcInChangeBit 放货有货返回:" + JsonConvert.SerializeObject(res), "放货有货");
            return res;
        }
        /// <summary>
        /// Wcs取货无货 取消任务
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("api/ZcOutChangeBit")]
        public WcsWarningReurn ZcOutChangeBit(changeBitParme model)
        {
            LogHelper.Info("ZcOutChangeBit 取货无货参数:" + JsonConvert.SerializeObject(model), "取货无货");
            var res = WcsTask.ZcOutChangeBit(model);
            LogHelper.Info("ZcOutChangeBit 取货无货返回:" + JsonConvert.SerializeObject(res), "取货无货");
            return res;
        }
core/Monitor.cs
@@ -14,6 +14,7 @@
using System.Threading;
using System.Threading.Tasks;
using System.Web.Services.Description;
using Top.Api;
using static HH.WCS.ZhongCeJinTan.api.ApiModel;
namespace HH.WCS.ZhongCeJinTan.core
@@ -197,28 +198,59 @@
                                        LogHelper.Info($"任务{wmsTask.S_CODE}完成,判断入库优先级", "入库优先级");
                                        TaskProcess.inPri(wmsTask);
                                        TaskHelper.End(wmsTask);
                                        break;
                                    case 7:
                                        if (!LocationHelper.GetErroArea(wmsTask.S_END_AREA)) {
                                            TaskHelper.opMesTask(wmsTask, 3);
                                        }
                                        TaskHelper.Fail(wmsTask);
                                        TaskProcess.OperateStatus(wmsTask, 7);
                                        WmsTaskAction ac4 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "4");
                                        //已经取货完成
                                        if (ac4 != null)
                                        {
                                            
                                        var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
                                        }
                                            var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
                                            if (wcsTask1 != null)
                                            {
                                                //agv执行通知 wcs取消
                                                WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
                                                if (wcsTask1.S_B_STATE.Trim() != "取消" && wcsTask1.S_B_STATE.Trim() != "失败" && wcsTask1.S_B_STATE.Trim() != "完成")
                                                {
                                                    TaskHelper.Fail(wcsTask1);
                                                    TaskProcess.OperateStatus(wcsTask1, 7);
                                                }
                                                    if (wmsTask.S_TYPE.Contains("出库"))
                                                    {
                                                        WmsTaskAction ac1101 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "1101");
                                                        WmsTaskAction ac1102 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "1102");
                                                        if ((ac1101 != null))
                                                        {
                                                            if (ac1102 == null)
                                                            {
                                                                //agv执行通知 wcs取消
                                                                WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        WmsTaskAction ac1103 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "1103");
                                                        WmsTaskAction ac1104 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "1104");
                                                        if ((ac1103 != null))
                                                        {
                                                            if (ac1104 == null)
                                                            {
                                                                //agv执行通知 wcs取消
                                                                WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
                                                            }
                                                        }
                                                    }
                                                  }
                                            }
                                        
                                        TaskHelper.Fail(wmsTask);
                                        TaskProcess.OperateStatus(wmsTask, 7);
                                        //入库或者回库任务取消删除托盘物料
                                        if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库"))
                                        {
@@ -228,19 +260,32 @@
                                        }
                                        else {
                                            //出库取消判断接驳位是否有货,有货需要解绑
                                            if (!WcsTask.WcsCvstate(wmsTask))
                                            var wmsWork = TaskHelper.GetWmsWork(wmsTask.S_OP_CODE);
                                            if (wmsWork != null)
                                            {
                                                LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库");
                                                TaskProcess.OperateStatus(wmsTask, 4);
                                                ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
                                                ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
                                                if (!string.IsNullOrEmpty(wmsWork.CONNECTION))
                                                {
                                                    var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION, "agv",wmsTask.T_CREATE);
                                                    LogHelper.Info($"取消任务{wmsTask.S_CODE},当前接驳位{wmsWork.CONNECTION},第一个agv任务信息" + JsonConvert.SerializeObject(agvTask), "agv动作缓存");
                                                    if (agvTask != null)
                                                    {
                                                        WmsTaskAction qh = TaskHelper.GetActionRecord(agvTask.S_CODE, "4");
                                                        //已经取货完成
                                                        if (qh != null)
                                                        {
                                                            if (!WcsTask.WcsCvstate(wmsTask))
                                                            {
                                                                LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库");
                                                                TaskProcess.OperateStatus(wmsTask, 4);
                                                                ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
                                                                ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                }
                                TaskHelper.AddActionRecord(wmsTask.S_CODE, model.state, model.forklift_no, model.ext_data);
                            }
dispatch/WcsTask.cs
@@ -16,6 +16,7 @@
using System.Web.Services.Description;
using Top.Api;
using static HH.WCS.ZhongCeJinTan.api.ApiModel;
using static HH.WCS.ZhongCeJinTan.util.Settings;
using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
namespace HH.WCS.ZhongCeJinTan.dispatch
@@ -1207,8 +1208,72 @@
            }
        }
        /// <summary>
        /// 取货无货
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static WcsWarningReurn ZcOutChangeBit(changeBitParme model)
        {
            var result = new WcsWarningReurn();
            var newDb = new SqlHelper<object>().GetInstance();
            try
            {
                if (string.IsNullOrEmpty(model.taskNo))
                {
                    throw new Exception("任务号为空");
                }
                var task = TaskHelper.GetTask(model.taskNo);
                if (task == null)
                {
                    throw new Exception($"未查询到任务号{model.taskNo}的任务");
                }
                if (task.S_TYPE.Contains("出库"))
                {
                    //取货无货
                    LogHelper.Info($"任务号{task.S_CODE},取货无货,取消任务", "取货无货");
                    if (WcsCancellTask(task))
                    {
                        LogHelper.Info($"任务号{task.S_CODE},取消任务成功,起点{task.S_START_LOC}设为异常", "取货无货");
                        TaskHelper.Fail(task);
                        TaskProcess.OperateStatus(task, 7);
                        LocationHelper.updateLocLock(task.S_START_LOC, 3, "其他锁");
                        var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv");
                        if (agvTask != null)
                        {
                            if (agvTask.S_B_STATE != "未执行")
                            {
                                NDCApi.CancelOrder(agvTask.S_CODE.Trim());
                            }
                            TaskHelper.Fail(agvTask);
                            TaskProcess.CacheBitCancelUpdate(agvTask);
                        }
                    }
                }
                else
                {
                    throw new Exception($"任务号{model.taskNo},任务类型{task.S_TYPE}");
                }
                result.msg = "Wcs取货无货处理成功";
                result.code = "0";
                result.requestPk = model.requestPk;
                return result;
            }
            catch (Exception ex)
            {
                newDb.RollbackTran();
                result.msg = "Wcs取货无货异常";
                result.code = "1";
                result.requestPk = model.requestPk;
                LogHelper.Info("Wcs取货无货异常" + ex.Message, "取货无货");
                return result;
            }
        }
        /// <summary>
        /// 放货有货
@@ -1233,39 +1298,16 @@
                            throw new Exception($"未查询到任务号{model.taskNo}的任务");
                        }
                    if (task.S_TYPE.Contains("出库"))
                    {
                        //取货无货
                        LogHelper.Info($"任务号{task.S_CODE},取货无货,取消任务", "放货有货");
                        if (WcsCancellTask(task))
                        {
                            LogHelper.Info($"任务号{task.S_CODE},取消任务成功,起点{task.S_START_LOC}设为异常", "放货有货");
                            TaskHelper.Fail(task);
                            TaskProcess.OperateStatus(task, 7);
                            LocationHelper.updateLocLock(task.S_START_LOC, 3, "其他锁");
                            var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv");
                            if (agvTask != null)
                            {
                                if (agvTask.S_B_STATE!="未执行")
                                {
                                    NDCApi.CancelOrder(agvTask.S_CODE.Trim());
                                }
                                TaskHelper.Fail(agvTask);
                                TaskProcess.CacheBitCancelUpdate(agvTask);
                            }
                        }
                    }
                    else {
                    if (!task.S_TYPE.Contains("出库")) {
                        //卸货有货
                        if (task.S_B_STATE.Contains("完成") || task.S_B_STATE.Contains("取消") || task.S_B_STATE.Contains("失败"))
                        if (task.S_B_STATE == "完成" || task.S_B_STATE.Contains("取消") || task.S_B_STATE.Contains("失败"))
                        {
                            throw new Exception($"任务号{model.taskNo},任务状态:{task.S_B_STATE},不能改道");
                        }
                        var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                        var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First();
                        var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROADWAY == endLoc.N_ROADWAY && a.N_COL != endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).First();
                        LogHelper.Info($"Wcs放货有货寻找新终点信息" + JsonConvert.SerializeObject(end), "放货有货");
@@ -1282,17 +1324,19 @@
                            result.msg = end.S_CODE;
                            result.code = "0";
                            result.requestPk = model.requestPk;
                            return result;
                        }
                        else
                        {
                            throw new Exception($"未查询到库区{endLoc.S_AREA_CODE}有符合的货位");
                        }
                    }else
                        {
                        throw new Exception($"任务号{model.taskNo},任务类型{task.S_TYPE}");
                    }
                        result.msg = "Wcs放货有货/取货无货处理成功";
                        result.code = "0";
                        result.requestPk = model.requestPk;
                        return result;
                    }
                    catch (Exception ex)
                    {
@@ -1303,7 +1347,6 @@
                        LogHelper.Info("Wcs放货有货异常" + ex.Message, "放货有货");
                    return result;
                    }
                    return result;
             }
process/TaskProcess.cs
@@ -560,7 +560,7 @@
                        }
                        //接驳位两个agv任务,a任务取货完成 推送b任务
                        var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION,"agv");
                        var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION,"agv", mst.T_CREATE);
                        LogHelper.Info($"推送任务{mst.S_CODE},当前接驳位{wmsWork.CONNECTION},第一个agv任务信息"+JsonConvert.SerializeObject(agvTask), "NDC");
                        //if (agvTask==null)
@@ -990,105 +990,182 @@
                return result;
            }
            if (string.IsNullOrEmpty(model.task_no))
            {
                result.errMsg = "task_no为null";
                result.errCode = 1;
                result.success = false;
                return result;
            }
            try
            {
                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs");
                if (task != null)
                var work = TaskHelper.GetWmsWork(model.task_no);
                if (work==null)
                {
                    LogHelper.Info($"cancelTask1取消agv任务{task.S_CODE}:", "取消");
                    if (task.S_B_STATE.Trim() == "未执行")
                    result.errCode = 1;
                    result.errMsg = $"{model.task_no}作业不存在,不允许取消";
                    result.success = false;
                    return result;
                }
                //作业没有接驳位,一段任务取消
                if (string.IsNullOrEmpty(work.CONNECTION)) {
                    if (task != null)
                    {
                        //未执行直接修改状态为取消
                        TaskHelper.opMesTask(task, 3);
                        TaskHelper.Fail(task);
                        TaskProcess.CacheBitCancelUpdate(task);
                        if (task.S_TYPE.Contains("入库") || task.S_TYPE.Contains("回库"))
                        if (task.S_TYPE.Contains("出库"))
                        {
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                        }
                        result.errCode = 0;
                        result.errMsg = "取消成功";
                        result.success = true;
                    }
                    else if (task.S_B_STATE.Trim() != "取消" && task.S_B_STATE.Trim() != "失败" && task.S_B_STATE.Trim() != "完成")
                    {
                        var db = new SqlHelper<object>().GetInstance();
                        var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First();
                        else {
                            if (task.S_B_STATE.Trim() == "未执行")
                            {
                                //未执行直接修改状态为取消
                                TaskHelper.opMesTask(task, 3);
                                TaskHelper.Fail(task);
                                TaskProcess.CacheBitCancelUpdate(task);
                                ContainerHelper.delCntr(task.S_CNTR_CODE);
                                ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                                result.errCode = 0;
                                result.errMsg = "取消成功";
                                result.success = true;
                            }
                            else if (task.S_B_STATE.Trim() != "取消" && task.S_B_STATE.Trim() != "失败" && task.S_B_STATE.Trim() != "完成")
                            {
                                var db = new SqlHelper<object>().GetInstance();
                                var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First();
                        if (qhflag != null)
                        {
                            LogHelper.Info($"该任务{task.S_CODE}已经取货完成", "取消");
                            result.errCode = 1;
                            result.errMsg = "任务已经取货完成,不允许取消";
                            result.success = false;
                            return result;
                                if (qhflag != null)
                                {
                                    LogHelper.Info($"该任务{task.S_CODE}已经取货完成", "取消");
                                    result.errCode = 1;
                                    result.errMsg = "任务已经取货完成,不允许取消";
                                    result.success = false;
                                    return result;
                                }
                                  ContainerHelper.delCntr(task.S_CNTR_CODE);
                                  ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                                  ContainerHelper.delCntrLoc(task.S_CNTR_CODE);
                                TaskHelper.opMesTask(task, 3);
                                //已推送但是没有完成或者取消,通知hosttoagv
                                TaskHelper.Fail(task);
                                NDCApi.CancelOrder(task.S_CODE.Trim());
                                TaskProcess.CacheBitCancelUpdate(task);
                                result.errCode = 0;
                                result.errMsg = "取消成功";
                                result.success = true;
                            }
                            else
                            {
                                result.errCode = 1;
                                result.errMsg = "任务已经结束";
                                result.success = false;
                            }
                        }
                        if (task.S_TYPE.Contains("入库") || task.S_TYPE.Contains("回库"))
                        {
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                            ContainerHelper.delCntrLoc(task.S_CNTR_CODE);
                        }
                        TaskHelper.opMesTask(task, 3);
                        //已推送但是没有完成或者取消,通知hosttoagv
                        TaskHelper.Fail(task);
                        NDCApi.CancelOrder(task.S_CODE.Trim());
                        TaskProcess.CacheBitCancelUpdate(task);
                        result.errCode = 0;
                        result.errMsg = "取消成功";
                        result.success = true;
                        LogHelper.Info($"cancelTask1取消agv任务{task.S_CODE}:", "取消");
                    }
                    else
                    {
                        result.errCode = 1;
                        result.errMsg = "任务已经结束";
                        result.errMsg = $"{model.task_no},Agv任务不存在";
                        result.success = false;
                    }
                }
                else
                }else
                {
                    result.errCode = 1;
                    result.errMsg = $"{model.task_no}任务不存在";
                    result.success = false;
                }
                    //二段任务取消
                if (wcsTask != null)
                {
                    LogHelper.Info($"cancelTask1取消Wcs任务{wcsTask.S_CODE}", "取消");
                    if (wcsTask.S_B_STATE.Trim() == "未执行")
                    if (task.S_TYPE.Contains("出库"))
                    {
                        //未执行直接修改状态为取消
                        if (wcsTask.S_TYPE.Contains("入库") || wcsTask.S_TYPE.Contains("回库"))
                        if (wcsTask != null)
                        {
                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
                            LogHelper.Info($"cancelTask1取消Wcs任务{wcsTask.S_CODE}", "取消");
                            if (wcsTask.S_B_STATE.Trim() == "未执行" && task.S_B_STATE.Trim() == "未执行")
                            {
                                //未执行直接修改状态为取消
                                TaskHelper.opMesTask(task, 3);
                                TaskHelper.Fail(task);
                                TaskProcess.OperateStatus(task,7);
                                TaskHelper.Fail(wcsTask);
                                TaskProcess.OperateStatus(wcsTask, 7);
                                result.errCode = 0;
                                result.errMsg = "取消成功";
                                result.success = true;
                                return result;
                            }
                            else
                            {
                                LogHelper.Info($"该任务{wcsTask.S_CODE}已经推送", "取消");
                                result.errCode = 1;
                                result.errMsg = "任务已经推送,不允许取消";
                                result.success = false;
                                return result;
                            }
                        }
                        TaskHelper.Fail(wcsTask);
                        TaskProcess.OperateStatus(wcsTask, 7);
                        result.errCode = 0;
                        result.errMsg = "取消成功";
                        result.success = true;
                        return result;
                    }
                    else
                    else
                    {
                            LogHelper.Info($"该任务{wcsTask.S_CODE}已经推送", "取消");
                        if (task.S_B_STATE.Trim() == "未执行")
                        {
                            //未执行直接修改状态为取消
                            TaskHelper.opMesTask(task, 3);
                            TaskHelper.Fail(task);
                            TaskProcess.CacheBitCancelUpdate(task);
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                            result.errCode = 0;
                            result.errMsg = "取消成功";
                            result.success = true;
                        }
                        else if (task.S_B_STATE.Trim() != "取消" && task.S_B_STATE.Trim() != "失败" && task.S_B_STATE.Trim() != "完成")
                        {
                            var db = new SqlHelper<object>().GetInstance();
                            var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First();
                            if (qhflag != null)
                            {
                                LogHelper.Info($"该任务{task.S_CODE}已经取货完成", "取消");
                                result.errCode = 1;
                                result.errMsg = "任务已经取货完成,不允许取消";
                                result.success = false;
                                return result;
                            }
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                            ContainerHelper.delCntrLoc(task.S_CNTR_CODE);
                            TaskHelper.opMesTask(task, 3);
                            //已推送但是没有完成或者取消,通知hosttoagv
                            TaskHelper.Fail(task);
                            NDCApi.CancelOrder(task.S_CODE.Trim());
                            TaskProcess.CacheBitCancelUpdate(task);
                            result.errCode = 0;
                            result.errMsg = "取消成功";
                            result.success = true;
                        }
                        else
                        {
                            result.errCode = 1;
                            result.errMsg = "任务已经推送,不允许取消";
                            result.errMsg = "任务已经结束";
                            result.success = false;
                            return result;
                    }
                        }
                    }
                }
            }
            catch (Exception ex)
@@ -1726,6 +1803,12 @@
                    throw new Exception("缺少参数task_no");
                }
                var work = TaskHelper.GetWmsWork(model.task_no);
                if (work != null)
                {
                    throw new Exception($"任务{model.task_no}已经创建作业,请勿重复申请");
                }
                //var wmsWork = TaskHelper.GetTaskByCntrCode(model.TOOLS_NO);
@@ -1843,112 +1926,112 @@
                    {
                        //正式代码,调用接口寻找可用接驳位
                        //var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        //if (usableConnectionList != null && usableConnectionList.code == "0")
                        //{
                        //    var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找可用接驳位" + JsonConvert.SerializeObject(balanceConnectionList), "Mes任务下发");
                        //    if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
                        //    {
                        //        //满托入
                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        //        if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
                        //            LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                        //            balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
                        //        }
                        //    }
                        //    else if (workFlow.FLOWCODE == "3")
                        //    {
                        //        //空托入立库区
                        //        cntrCount = 0;
                        //        LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        //    }
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找终点数量{balanceLocList.Count}", "Mes任务下发");
                        //    foreach (var item in balanceLocList)
                        //    {
                        //        if (item.S_LOCK_STATE == "无" && item.N_CURRENT_NUM == 0)
                        //        {
                        //           // LogHelper.Info($"ZCSendTask入库任务下发item信息" + JsonConvert.SerializeObject(item), "Mes任务下发");
                        //            foreach (var item1 in balanceConnectionList)
                        //            {
                        //                if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
                        //                {
                        //                    connection = item1.S_CODE;
                        //                    connectionArea = item1.S_AREA_Name;
                        //                    end = item;
                        //                    LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                        //                    break;
                        //                }
                        //            }
                        //            if (end!=null)
                        //            {
                        //                LogHelper.Info($"ZCSendTask入库任务下发寻找到终点{end.S_CODE}", "Mes任务下发");
                        //                break;
                        //            }
                        //        }
                        //    }
                        //    if (connection == "")
                        //    {
                        //        LogHelper.Info($"ZCSendTask入库任务下发没找到接驳位", "Mes任务下发");
                        //        throw new Exception($"ZCSendTask入库任务下发没找到接驳位");
                        //    }
                        //}
                        //else
                        //{
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位接口失败", "Mes任务下发");
                        //    throw new Exception($"ZCSendTask入库任务下发寻找接驳位接口失败");
                        //}
                        if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11")
                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        if (usableConnectionList != null && usableConnectionList.code == "0")
                        {
                            //满托入
                            var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
                            LogHelper.Info($"ZCSendTask入库任务下发寻找可用接驳位" + JsonConvert.SerializeObject(balanceConnectionList), "Mes任务下发");
                            if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
                            if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11")
                            {
                                LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                                end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO);
                                //满托入
                                if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
                                {
                                    LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                                    balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
                                }
                                else {
                                    balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                                }
                            }
                            else {
                                end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                            else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10")
                            {
                                //空托入立库区
                                cntrCount = 0;
                                LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                            }
                            LogHelper.Info($"ZCSendTask入库任务下发寻找终点数量{balanceLocList.Count}", "Mes任务下发");
                            foreach (var item in balanceLocList)
                            {
                                if (item.S_LOCK_STATE == "无" && item.N_CURRENT_NUM == 0)
                                {
                                    // LogHelper.Info($"ZCSendTask入库任务下发item信息" + JsonConvert.SerializeObject(item), "Mes任务下发");
                                    foreach (var item1 in balanceConnectionList)
                                    {
                                        if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
                                        {
                                            connection = item1.S_CODE;
                                            connectionArea = item1.S_AREA_Name;
                                            end = item;
                                            LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                                            break;
                                        }
                                    }
                                    if (end != null)
                                    {
                                        LogHelper.Info($"ZCSendTask入库任务下发寻找到终点{end.S_CODE}", "Mes任务下发");
                                        break;
                                    }
                                }
                            }
                            if (connection == "")
                            {
                                   LogHelper.Info($"ZCSendTask入库任务{model.task_no}下发失败,终点库区{workFlow.ENDAREA},没找到终点巷道或接驳位不可用", "Mes任务下发");
                                   throw new Exception($"{model.task_no}下发失败终点库区{workFlow.ENDAREA},没找到终点,巷道或接驳位不可用");
                            }
                        }
                        else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10")
                        else
                        {
                            //空托入立库区
                            cntrCount = 0;
                            LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                        }
                        if (end == null)
                        {
                            LogHelper.Info($"ZCSendTask入库任务{model.task_no}下发失败,终点库区{workFlow.ENDAREA},没找到终点巷道或接驳位不可用", "Mes任务下发");
                            throw new Exception($"{model.task_no}下发失败终点库区{workFlow.ENDAREA},没找到终点,巷道或接驳位不可用");
                        }
                        var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY);
                        if (jb==null)
                        {
                            LogHelper.Info($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位");
                            LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位接口失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发寻找接驳位接口失败");
                        }
                        connection = jb.S_CODE;
                        connectionArea = jb.S_AREA_Name;
                        //if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11")
                        //{
                        //    //满托入
                        //    if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
                        //    {
                        //        LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                        //        end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO);
                        //    }
                        //    else {
                        //        end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                        //    }
                        //}
                        //else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10")
                        //{
                        //    //空托入立库区
                        //    cntrCount = 0;
                        //    LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                        //    end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                        //}
                        //if (end == null)
                        //{
                        //    LogHelper.Info($"ZCSendTask入库任务{model.task_no}下发失败,终点库区{workFlow.ENDAREA},没找到终点巷道或接驳位不可用", "Mes任务下发");
                        //    throw new Exception($"{model.task_no}下发失败终点库区{workFlow.ENDAREA},没找到终点,巷道或接驳位不可用");
                        //}
                        //var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY);
                        //if (jb==null)
                        //{
                        //    LogHelper.Info($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位", "Mes任务下发");
                        //    throw new Exception($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位");
                        //}
                        //connection = jb.S_CODE;
                        //connectionArea = jb.S_AREA_Name;
                    }
util/LogHelper.cs
@@ -85,7 +85,7 @@
        /// 通过配置文件配置日志
        /// </summary>
        static LogFactory() {
            var loggerNames = new List<string>() { "ModBus", "API", "HosttoagvTask", "任务","强制完成","点到点","取消", "NDC", "物料绑定解绑", "修改物料", "立库", "报警上报", "Mes任务下发", "接驳位", "Wcs任务执行通知", "立库下发任务", "立库取消任务", "巷道可用上报", "通知确认", "agv执行通知", "安全交互", "放货有货", "胎面交互", "改道安全交互", "上下架记录", "Wcs下发任务", "门交互", "HosttoagvCar", "钉钉通知", "空托出库", "入库优先级", "agv动作缓存", "回报Mes任务" };
            var loggerNames = new List<string>() { "ModBus", "API", "HosttoagvTask", "任务","强制完成","点到点","取消", "NDC", "物料绑定解绑", "修改物料", "立库", "报警上报", "Mes任务下发", "接驳位", "Wcs任务执行通知", "立库下发任务", "立库取消任务", "巷道可用上报", "通知确认", "agv执行通知", "安全交互", "放货有货", "胎面交互", "改道安全交互", "上下架记录", "Wcs下发任务", "门交互", "HosttoagvCar", "钉钉通知", "空托出库", "入库优先级", "agv动作缓存", "回报Mes任务", "取货无货" };
            LogManager.Configuration = DefaultConfig(loggerNames);
        }
        public static ILogger CreateLogger(string name) {
wms/LocationHelper.cs
@@ -105,6 +105,19 @@
            return result;
        }
        internal static List<string> GetConnectionListNoYN(string S_AREA_CODE)
        {
            var db = new SqlHelper<object>().GetInstance();
            var ConnectionList = db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE ).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).ToList();
            List<string> result = new List<string>();
            foreach (var item in ConnectionList)
            {
                result.Add(item.S_CODE);
            }
            return result;
        }
        /// <summary>
        /// 获取货位信息,参数库区编号
        /// </summary>
@@ -163,7 +176,17 @@
            var db = new SqlHelper<object>().GetInstance();
            
          return db.Queryable<WMSTask>().Where(a => ( a.S_START_LOC.Contains(jbLoc)&& a.S_SCHEDULE_TYPE.Contains(type)  && a.S_B_STATE != "完成" && a.S_B_STATE != "取消" && a.S_B_STATE != "失败" && a.S_B_STATE != "已完成" && a.S_B_STATE != "未执行")).OrderBy(b=>b.T_CREATE).First();
        }
        /// <summary>
        /// 返回出库agv任务
        /// </summary>
        internal static WMSTask GetConnectionTask(string jbLoc, string type,DateTime time)
        {
            var db = new SqlHelper<object>().GetInstance();
            return db.Queryable<WMSTask>().Where(a => (a.S_START_LOC.Contains(jbLoc) && a.S_SCHEDULE_TYPE.Contains(type) && a.S_B_STATE != "完成" && a.S_B_STATE != "取消" && a.S_B_STATE != "失败" && a.S_B_STATE != "已完成" && a.S_B_STATE != "未执行"&&a.T_CREATE<time)).OrderBy(b => b.T_CREATE).First();
        }
        /// <summary>
@@ -325,8 +348,13 @@
                //获取string接驳位集合
                var connectionList = LocationHelper.GetConnectionList(CONNECTION);
                var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION);
                //不可用接驳位集合
                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList);
                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN);
                List<Location> jblist = new List<Location>();
@@ -341,7 +369,7 @@
                    List<Location> difference = flaseConnectionList
    .Where(loc1 => !balanceConnectionList.Any(loc2 => loc2.S_CODE == loc1.S_CODE))
    .ToList();
                    jblist = difference;
@@ -404,8 +432,13 @@
                    {
                        if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0)
                        {
                            flag2 = true;
                            break;
                            var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First();
                            if (ConnectionY == null)
                            {
                                flag2 = true;
                                break;
                            }
                        }
                    }
@@ -463,8 +496,10 @@
                //获取string接驳位集合
                var connectionList = LocationHelper.GetConnectionList(CONNECTION);
                var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION);
                //不可用接驳位集合
                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList);
                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN);
                List<Location> jblist = new List<Location>();
@@ -539,8 +574,12 @@
                    {
                        if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0)
                        {
                            flag2 = true;
                            break;
                            var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First();
                            if (ConnectionY == null)
                            {
                                flag2 = true;
                                break;
                            }
                        }
                    }
@@ -1265,10 +1304,6 @@
                var balanceConnectionList = LocationHelper.GetConnectionListByst(connectionList);
                LogHelper.Info($"ZCSendTask出库任务排除不可用巷道开始", "Mes任务下发");
                //作业流程的巷道
wms/TaskHelper.cs
@@ -65,7 +65,7 @@
        internal static WmsWork GetWmsWork(string no) {
            var db = new SqlHelper<WmsWork>().GetInstance();
            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First();
            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).OrderByDescending(b=>b.T_CREATE).First();
        }