海波 张
2025-05-13 945a65e917ffd620fc51354245f0e5b31f7a03ab
中策金坛
9个文件已修改
358 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/AgvController.cs 补丁 | 查看 | 原始文档 | blame | 历史
dispatch/WcsTask.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
process/DeviceProcess.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
process/TaskProcess.cs 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/LocationHelper.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/WMSModel.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -184,3 +184,4 @@
# Microsoft Fakes
FakesAssemblies/
/.vs/HH.WCS.ZhongCeJinTan/FileContentIndex
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json
@@ -3,12 +3,24 @@
  "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\\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\\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\\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\\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\\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\\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}"
    }
  ],
  "DocumentGroupContainers": [
@@ -18,8 +30,47 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 3,
          "SelectedChildIndex": 2,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "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": "AgIAAAAAAAAAAAAAAAAAAAQAAAALAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2025-05-13T02:21:47.086Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "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": "AgIAAEcAAAAAAAAAAAAIwF0AAAAgAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T01:45:08.835Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "TaskProcess.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
              "RelativeDocumentMoniker": "process\\TaskProcess.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
              "RelativeToolTip": "process\\TaskProcess.cs",
              "ViewState": "AgIAAFUAAAAAAAAAAADwv2EAAAAmAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T00:45:23.095Z",
              "EditorCaption": ""
            },
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
@@ -34,26 +85,26 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 4,
              "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": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAB8AAAAAAAAAAAAUwD4AAAAlAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:08.931Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 3,
              "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": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
              "ViewState": "AgIAABcEAAAAAAAAAAAiwCMEAAARAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:05.064Z",
              "EditorCaption": ""
.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json
@@ -3,8 +3,36 @@
  "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\\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\\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\\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\\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\\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\\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\\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\\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}",
@@ -18,8 +46,99 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 3,
          "SelectedChildIndex": 0,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "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": "AgIAANcAAAAAAAAAAAAiwOsAAABMAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:22:54.115Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "WcsTask.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
              "RelativeDocumentMoniker": "dispatch\\WcsTask.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
              "RelativeToolTip": "dispatch\\WcsTask.cs",
              "ViewState": "AgIAAJUDAAAAAAAAAAAiwLYDAAARAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:19:48.409Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "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": "AgIAADIAAAAAAAAAAAAcwFkAAABjAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T09:13:15.283Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "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": "AgIAAAAAAAAAAAAAAADwvxoAAAAjAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T03:17:31.542Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "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": "AgIAAAAAAAAAAAAAAAAAAAQAAAALAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2025-05-13T02:21:47.086Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "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": "AgIAADgAAAAAAAAAAAAAwF0AAAAnAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T01:45:08.835Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "TaskProcess.cs",
              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
              "RelativeDocumentMoniker": "process\\TaskProcess.cs",
              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
              "RelativeToolTip": "process\\TaskProcess.cs",
              "ViewState": "AgIAAFgAAAAAAAAAAADwv2EAAAAnAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-13T00:45:23.095Z",
              "EditorCaption": ""
            },
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
@@ -34,28 +153,29 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "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": "AgIAAAAAAAAAAAAAAADwvxsAAAASAAAAAAAAAA==",
              "ViewState": "AgIAAJUAAAAAAAAAAAAuwLAAAAAlAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:08.931Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 8,
              "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": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
              "ViewState": "AgIAABcEAAAAAAAAAAAiwCMEAAARAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-12T09:36:05.064Z"
              "WhenOpened": "2025-05-12T09:36:05.064Z",
              "EditorCaption": ""
            }
          ]
        }
api/AgvController.cs
dispatch/WcsTask.cs
@@ -942,7 +942,8 @@
                    Type = "3";
                    Meshod = "AgvRequestCancel";
                }
                else if (state == 4) {
                else if (state == 4)
                {
                    //申请出门
                    Type = "4";
                    Meshod = "AgvRequest";
@@ -1161,7 +1162,7 @@
                      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).OrderBy(b=>b.N_COL).First();
                       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();
                      LogHelper.Info($"Wcs放货有货寻找新终点信息" + JsonConvert.SerializeObject(end), "放货有货");
process/DeviceProcess.cs
@@ -231,6 +231,12 @@
                }else
                 {
                    if (safety.type == 1)
                    {
                        LogHelper.Info($"接驳位安全交互开始 任务号={mst.S_CODE},交互类型为1,取货完成", "安全交互");
                        //取货完成通知立库
                        WcsTask.WcsCallback(mst, state, fkNo);
                    }
                    //1102取货完成
                    if (safety.type == 2)
                    {
@@ -324,6 +330,12 @@
                }
                else
                {
                    if (safety.type == 1)
                    {
                        LogHelper.Info($"接驳位安全交互开始 任务号={mst.S_CODE},交互类型为1,卸货完成", "安全交互");
                        //卸货完成通知立库
                        WcsTask.WcsCallback(mst, state, fkNo);
                    }
                    //1104卸货完成
                    if (safety.type == 2)
                    {
process/TaskProcess.cs
@@ -116,8 +116,22 @@
            }
            else if (state == 1105)
            {
                //判断接驳位和巷道是否可用 不可用需要改道
                changeBit(mst);
                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
                if (workFlow == null)
                {
                    LogHelper.Info($"判断接驳位以及巷道是否可用,BUSI_TYpe:{mst.N_TYPE},没找到对应作业流程", "改道安全交互");
                    return;
                }
                var wcsTask = TaskHelper.GetTask(mst.S_OP_CODE + "_2");
                if (wcsTask == null)
                {
                    LogHelper.Info($"判断巷道可用失败,没找到对应{mst.S_OP_CODE + "_2"}任务", "改道安全交互");
                    return;
                }
                //判断空托缓存、接驳位和巷道是否可用 不可用需要改道
                changeBit(mst,wcsTask,workFlow);
            }
            else if (state == 1023 || state == 1025)
            {
@@ -187,38 +201,22 @@
        private static object locLocker = new object();
        internal static void changeBit(WMSTask task) {
        internal static void changeBit(WMSTask task, WMSTask wcsTask, WorkFlow workFlow) {
            var db = new SqlHelper<object>().GetInstance();
            try
            {
                var workFlow = TaskHelper.selectWorkFlowByType(task.N_TYPE.ToString(), task.TOOLSTYPE);
                if (workFlow == null)
                {
                    LogHelper.Info($"判断接驳位以及巷道是否可用,BUSI_TYpe:{task.N_TYPE},没找到对应作业流程", "改道安全交互");
                    throw new Exception($"判断接驳位以及巷道是否可用,BUSI_TYpe:{task.N_TYPE},没找到对应作业流程");
                }
                var wcsTask = db.Queryable<WMSTask>().Where(e => e.S_CODE == task.S_OP_CODE + "_2")?.First();
                if (wcsTask == null)
                {
                    LogHelper.Info($"判断巷道可用失败,没找到对应{task.S_OP_CODE + "_2"}任务", "改道安全交互");
                    throw new Exception($"判断巷道可用失败,没找到对应{task.S_OP_CODE + "_2"}任务");
                }
                //判断接驳位可用
                var flag = true;
                //空托入库判断空托出缓存表,有对应记录直接改道到缓存表终点
                if (workFlow.FLOWCODE=="3") {
                    var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").First();
                    var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").OrderBy(a=>a.CreateDate).First();
                    if (kt == null)
                    {
                        LogHelper.Info($"当前任务{task.S_CODE}没找到空托出缓存记录,不需要改道,直接修改参数6为1", "改道安全交互");
                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
                        return;
                        LogHelper.Info($"当前任务{task.S_CODE}没找到空托出缓存记录", "改道安全交互");
                    }
                    else {
@@ -231,32 +229,59 @@
                        //{
                        //    LogHelper.Info($"当前任务{task.S_CODE}改道终点失败,终点:{kt.Location_To},没找到或有锁", "改道安全交互");
                        //}
                        TaskHelper.Fail(wcsTask);
                        TaskProcess.OperateStatus(wcsTask, 7);
                        LocationHelper.LockLoc(end.S_CODE, "入库锁", 1);
                        var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                        endLoc.N_LOCK_STATE = 0;
                        endLoc.S_LOCK_STATE = "无";
                        db.BeginTran();
                        db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                        //改一段任务终点
                        task.S_END_LOC = end.S_CODE;
                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
                        task.S_END_AREA = end.S_AREA_CODE;
                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC,it.S_END_AREA}).ExecuteCommand();
                        kt.Status = "Y";
                        db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand();
                        db.CommitTran();
                        WcsTask.WcsCancellTask(wcsTask);
                        var site = LocationHelper.GetAgvSiteZc(end.S_CODE);
                        LogHelper.Info($"任务{task.S_CODE}改道成功,改参数2为{site},参数6为1", "改道安全交互");
                        NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
                        return;
                    }
                }
                if (workFlow.FLOWNAME.Contains("入库"))
                {
                    var loc1 = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
                    //查找可用巷道
                    var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == wcsTask.S_END_AREA && x.status == "0" && x.roadWay == loc1.N_ROADWAY.ToString()).First();
                    if (rowdwa == null)
                    {
                        LogHelper.Info($"判断巷道可用,当前库区{wcsTask.S_END_AREA}当前巷道{loc1.N_ROADWAY}可用,不需要改道", "改道安全交互");
                    }
                    else
                    {
                        LogHelper.Info($"当前巷道不可用,需要改道", "改道安全交互");
                        var endLoc = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
                        var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
                        var end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        LogHelper.Info($"当前巷道不可用,需要改道,新终点信息" + JsonConvert.SerializeObject(end), "改道安全交互");
                        if (end == null)
                        {
                            LogHelper.Info($"当前巷道不可用,终点库区{workFlow.ENDAREA},没找到终点", "改道安全交互");
                            throw new Exception($"终点库区{workFlow.ENDAREA},没找到终点");
                        }
                        LocationHelper.LockLoc(end.S_CODE, "入库锁", 1);
                        db.BeginTran();
                        endLoc.N_LOCK_STATE = 0;
                        endLoc.S_LOCK_STATE = "无";
                        db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                        wcsTask.S_END_LOC = end.S_CODE;
                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
                        db.CommitTran();
                    }
                    var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                    var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList);
                    if (usableConnectionList != null && usableConnectionList.code == "0")
@@ -264,8 +289,9 @@
                        foreach (var item in usableConnectionList.available)
                        {
                            var con = LocationHelper.GetLoc(item);
                            if (con.S_CODE.Contains(task.S_END_LOC))
                            if (con.S_CODE.Contains(task.S_END_LOC) && con.C_ENABLE=="Y")
                            {
                                flag = false;
                                LogHelper.Info($"当前任务{task.S_CODE}接驳位{con.S_CODE}可用,不需要改道,直接修改参数6为1", "改道安全交互");
                                NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
@@ -286,7 +312,7 @@
                        foreach (var item in usableConnectionList.available)
                        {
                            var con = LocationHelper.GetLoc(item);
                            if (con.S_LOCK_STATE == "无" && con.N_CURRENT_NUM < 2)
                            if (con.N_CURRENT_NUM < 2)
                            {
                                connection = con.S_CODE;
                                LogHelper.Info($"改道寻找到可用接驳位{connection}", "改道安全交互");
@@ -300,8 +326,7 @@
                        var loc = LocationHelper.GetLocOne(connection);
                        if (workFlow.FLOWNAME.Contains("入库"))
                        {
                            LocationHelper.LockLoc(loc.S_CODE, "入库锁", 1);
                            var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                            endLoc.N_LOCK_STATE = 0;
@@ -310,11 +335,14 @@
                            db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                            //改一段任务终点
                            task.S_END_LOC = loc.S_CODE;
                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
                            task.S_END_AREA = loc.S_AREA_CODE;
                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand();
                            //改二段任务起点
                            wcsTask.S_START_LOC = loc.S_CODE;
                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC }).ExecuteCommand();
                            wcsTask.S_START_AREA = loc.S_AREA_CODE;
                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC ,it.S_START_AREA}).ExecuteCommand();
                            db.CommitTran();
                            
                            var site = LocationHelper.GetAgvSiteZc(loc.S_CODE);
@@ -322,7 +350,7 @@
                            NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                            NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
                           
                        }
                        //} else if (workFlow.FLOWNAME.Contains("出库")) {
                        //    var endLoc = LocationHelper.GetLocOne(task.S_START_LOC);
                        //    endLoc.N_LOCK_STATE = 3;
@@ -1280,7 +1308,7 @@
                            foreach (var item in usableConnectionList.available)
                            {
                                var con = LocationHelper.GetLoc(item);
                                if (con.S_LOCK_STATE == "无" && con.N_CURRENT_NUM < 2)
                                if (con.N_CURRENT_NUM < 2 && con.C_ENABLE == "Y")
                                {
                                    connection = con.S_CODE;
                                    LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
wms/LocationHelper.cs
@@ -68,7 +68,7 @@
        internal static List<Location> GetAllLocList1(string S_AREA_CODE)
        {
            var db = new SqlHelper<object>().GetInstance();
            return db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE).OrderBy(a=> a.N_ROW).OrderBy(a => a.N_COL).ToList();
            return db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE && s.C_ENABLE == "Y").OrderBy(a=> a.N_ROW).OrderBy(a => a.N_COL).ToList();
        }
        /// <summary>
@@ -77,7 +77,7 @@
        internal static List<Location> GetAllLocList2(string S_AREA_CODE)
        {
            var db = new SqlHelper<object>().GetInstance();
            return db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).ToList();
            return db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE && s.C_ENABLE == "Y").OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).ToList();
        }
@@ -87,7 +87,7 @@
        internal static List<string> GetConnectionList(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();
            var ConnectionList =  db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE && s.C_ENABLE == "Y").OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).ToList();
            List<string> result = new List<string>();
            foreach (var item in ConnectionList)
            {
@@ -176,10 +176,10 @@
                        {
                            other = rowList.Where(b => b.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault();
                        }
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "禁用"))
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "N"))
                        {
                            //禁用了选择后面一个货位
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "禁用") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE=="无"&& a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "N") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE=="无"&& a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                        }
                        if (other != null)
                        {
@@ -253,10 +253,10 @@
                        {
                            other = rowList.Where(b => b.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault();
                        }
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "禁用"))
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "N"))
                        {
                            //禁用了选择后面一个货位
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "禁用") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE == "无" && a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "N") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE == "无" && a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                        }
                        if (other != null)
                        {
@@ -313,10 +313,10 @@
                        {
                            other = rowList.Where(b => b.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault();
                        }
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "禁用"))
                        if (other != null && (!string.IsNullOrEmpty(other.C_ENABLE) && other.C_ENABLE == "N"))
                        {
                            //禁用了选择后面一个货位
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "禁用") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE == "无" && a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                            other = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "N") && a.S_AREA_CODE == other.S_AREA_CODE && a.S_LOCK_STATE == "无" && a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First();
                        }
                        if (other != null)
                        {
wms/WMSModel.cs
@@ -1059,7 +1059,6 @@
    [ST("空托出缓存表")]
    public class MesKtTask : BaseModel
    {
        /// <summary>
        /// 工装类型 胎侧25,内衬35,胎体/帘布45,带束55,胎圈65,胎面15,纤维85,钢丝95
        /// </summary>
@@ -1081,22 +1080,6 @@
       
        /// <summary>
        /// 业务类型
        /// 1    半成品满托入库
        /// 2    成型机半桶回库
        /// 3    成型机空桶回库
        /// 4    成型机满托出库
        /// 5    成型机带束回库
        /// 6    成型机带束满托出库
        /// 7    半成品空托出库
        /// 8    胶料入库
        /// 9    呼叫胶料
        /// 10    叠盘机空托入库
        /// 11    胶料半桶回库
        /// 12    空架子入库
        /// 13    胎圈空托入不带垫片
        /// 14    胎圈空托出不带垫片
        /// 100    绑定
        /// 200    解绑
        /// </summary>
        public string BUSI_TYPE { get; set; }