| | |
| | | "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "MESTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ViewState": "AgIAAKsAAAAAAAAAAAAIwLkAAABvAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T04:46:32.724Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "TaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "ViewState": "AgIAAFoAAAAAAAAAAAA1wGkAAAAxAAAAAAAAAA==", |
| | | "ViewState": "AgIAACsAAAAAAAAAAAAUwEQAAAAuAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:43:08.208Z", |
| | | "WhenOpened": "2026-01-15T09:34:50.06Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "ITaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "ViewState": "AgIAAC0AAAAAAAAAAAAIwEAAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:41:47.98Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "DocumentIndex": 1, |
| | | "Title": "WCSTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "ViewState": "AgIAABMAAAAAAAAAAAAewDQAAAAaAAAAAAAAAA==", |
| | | "ViewState": "AgIAABcAAAAAAAAAAAAmwDQAAAAnAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:33:32.644Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "WCSTaskController.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAAAawCQAAAAJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:33:19.137Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "WCStask.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "RelativeToolTip": "WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAADwvxUAAAAXAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:30:03.161Z", |
| | | "WhenOpened": "2026-01-15T09:33:49.567Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAADwvx0AAABBAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2026-01-15T03:14:10.484Z", |
| | | "EditorCaption": "" |
| | | "Title": "MESTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ViewState": "AgIAAIEAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T08:12:36.935Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "TaskController.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAAAAAB0AAAAJAAAAAAAAAA==", |
| | | "DocumentIndex": 2, |
| | | "Title": "PartialTaskService_Outbound.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:03:40.066Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-15T08:12:32.509Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "MESTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ViewState": "AgIAAK4AAAAAAAAAAAAIwLoAAACWAAAAAAAAAA==", |
| | | "Title": "WMSCruJob.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs", |
| | | "ViewState": "AgIAACIAAAAAAAAAAAAmwCQAAABAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T04:46:32.724Z", |
| | | "WhenOpened": "2026-01-16T02:59:40.766Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs", |
| | | "ViewState": "AgIAAFoAAAAAAAAAAAA1wGkAAAAxAAAAAAAAAA==", |
| | | "ViewState": "AgIAAC4AAAAAAAAAAAAUwDgAAAAIAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:43:08.208Z", |
| | | "WhenOpened": "2026-01-15T09:34:50.06Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "ITaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs", |
| | | "ViewState": "AgIAAC0AAAAAAAAAAAAIwEAAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:41:47.98Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "WCSTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs", |
| | | "ViewState": "AgIAABMAAAAAAAAAAAAewDQAAAAaAAAAAAAAAA==", |
| | | "ViewState": "AgIAACAAAAAAAAAAAAAmwDQAAAAaAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:33:32.644Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "WCSTaskController.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAAAawCQAAAAJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:33:19.137Z", |
| | | "WhenOpened": "2026-01-15T09:33:49.567Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "WCStask.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "RelativeToolTip": "WIDESEA_DTO\\Task\\WCStask.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAADwvxUAAAAXAAAAAAAAAA==", |
| | | "Title": "MESTaskService.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs", |
| | | "ViewState": "AgIAAIEAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:30:03.161Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-15T08:12:36.935Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAADwvx0AAABBAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2026-01-15T03:14:10.484Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "TaskController.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAAAAAB0AAAAJAAAAAAAAAA==", |
| | | "Title": "PartialTaskService_Outbound.cs", |
| | | "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-15T03:03:40.066Z", |
| | | "WhenOpened": "2026-01-15T08:12:32.509Z", |
| | | "EditorCaption": "" |
| | | } |
| | | ] |
| | |
| | | using HslCommunication.WebSocket; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using SqlSugar; |
| | |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public string AccessingTunnel(int WarehouseId, int LocationType) |
| | | { |
| | | List<Dt_LocationInfo> locationData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId); |
| | | var roadwayGroups = locationData |
| | | .Where(x => x.LocationType == LocationType) |
| | | .GroupBy(x => x.RoadwayNo) |
| | | .Select(g => new |
| | | { |
| | | RoadwayNo = g.Key, |
| | | LocationCount = g.Count(), |
| | | AllLocations = g.ToList() |
| | | }) |
| | | .OrderByDescending(g => g.LocationCount) // æ¹ä¸ºéåºæåº |
| | | .FirstOrDefault(); // å第ä¸ä¸ªï¼æ°éæå¤çï¼ |
| | | var roadwayGroups = locationData.Where(x => x.LocationType == LocationType).GroupBy(x => x.RoadwayNo) |
| | | .Select(g => new |
| | | { |
| | | RoadwayNo = g.Key, |
| | | LocationCount = g.Count(), |
| | | }).OrderByDescending(g => g.LocationCount).ToList(); |
| | | |
| | | return roadwayGroups.RoadwayNo; |
| | | int minRequired = 15; |
| | | if(WarehouseId== (int)WarehouseEnum.YMYL) |
| | | { |
| | | if (LocationType == 2) minRequired = 6; |
| | | |
| | | var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired); |
| | | return selectedRoadway.RoadwayNo; |
| | | } |
| | | else |
| | | { |
| | | var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired); |
| | | if(selectedRoadway != null) |
| | | { |
| | | return selectedRoadway.RoadwayNo; |
| | | |
| | | } |
| | | else |
| | | { |
| | | selectedRoadway = roadwayGroups.FirstOrDefault(g => g.RoadwayNo =="5" && g.LocationCount != 0); |
| | | } |
| | | return selectedRoadway.RoadwayNo; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | [Description("空æ")] |
| | | 空æ = 3, |
| | | } |
| | | |
| | | public enum OperateType |
| | | { |
| | | 人工å é¤ = 1, |
| | | èªå¨å é¤ = 2, |
| | | 人工æ¢å¤ = 3, |
| | | èªå¨æ¢å¤ = 4, |
| | | äººå·¥å®æ = 5, |
| | | èªå¨å®æ = 6, |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.ComponentModel.DataAnnotations; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | |
| | | /// <summary> |
| | | /// å åæºå
¥åºå®æ |
| | | /// </summary> |
| | | [Description("å åæºåºåºå®æ")] |
| | | [Description("å åæºå
¥åºå®æ")] |
| | | SC_OutFinish = 245, |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | #endregion |
| | | |
| | | public enum MesOutTaskStatusEnum |
| | | { |
| | | /// <summary> |
| | | /// åºåºå¼å§ |
| | | /// </summary> |
| | | [Display(Name = "Start")] |
| | | åºåºå¼å§ = 1, |
| | | |
| | | [Display(Name = "Outstore")] |
| | | åºåºå®æ = 2, |
| | | |
| | | [Display(Name = "Finish")] |
| | | å°è¾¾ç®çå° = 3, |
| | | |
| | | [Display(Name = "Error")] |
| | | æ§è¡å¤±è´¥ = 4 |
| | | } |
| | | public enum MesInTaskStatusEnum |
| | | { |
| | | /// <summary> |
| | | /// å
¥åºå¼å§ |
| | | /// </summary> |
| | | [Display(Name = "Start")] |
| | | å
¥åºå¼å§ = 1, |
| | | |
| | | [Display(Name = "Finish")] |
| | | å
¥åºå®æ = 2, |
| | | |
| | | [Display(Name = "Error")] |
| | | æ§è¡å¤±è´¥ = 3 |
| | | } |
| | | public static class EnumExtensions |
| | | { |
| | | public static string GetDescription(this Enum value) |
| | | { |
| | | var field = value.GetType().GetField(value.ToString()); |
| | | var attribute = field?.GetCustomAttribute<DescriptionAttribute>(); |
| | | return attribute?.Description ?? value.ToString(); |
| | | } |
| | | } |
| | | } |
| | |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æçç±»åï¼1å¸å· 2æ¾å¸å·ï¼æåä»åªæ1ï¼ï¼ |
| | | /// </summary> |
| | | public int ContainerType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// wcs䏿¥ç±»å(1-è¾é线ï¼2-å åæº) |
| | | /// </summary> |
| | | public int TaskType { get; set; } |
| | |
| | | [ExporterHeader(DisplayName = "夿³¨")] |
| | | [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¸åæ¬¡æ° |
| | | /// </summary> |
| | | [ImporterHeader(Name = "ä¸å次æ°")] |
| | | [ExporterHeader(DisplayName = "ä¸å次æ°")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ä¸å次æ°")] |
| | | public int NumberSsuances { get; set; } |
| | | } |
| | | } |
| | |
| | | if (string.IsNullOrWhiteSpace(mES_In.endPosition)) return apiResponse.Error("ç®æ ä½ç½®ä¸è½ä¸ºç©º"); |
| | | if (string.IsNullOrWhiteSpace(mES_In.containerType)) return apiResponse.Error("è½½å
·ç±»åä¸è½ä¸ºç©º"); //è½½å
·ç±»åï¼å¸æ-1ï¼æ¾å¸å·-2ï¼æå-1 |
| | | |
| | | Dt_Warehouse dt_Warehouse = _warehouseService.QueryWarehouse(mES_In.warehouseNo); |
| | | if (dt_Warehouse == null) return apiResponse.Error($"WMSæªè½æ¥è¯¢é对åºä»åºï¼ä»åºç¼ç ï¼{mES_In.warehouseNo}"); |
| | | int LocationType = 1; |
| | | if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMYL) |
| | | { |
| | | if (mES_In.containerType == "2") LocationType = 2; |
| | | } |
| | | else if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMCP) |
| | | { |
| | | LocationType = 3; |
| | | } |
| | | |
| | | string Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType); |
| | | if (Roadway == "") return apiResponse.Error($"WMSæªè½æ¥è¯¢é对åºå··éç¼å·ï¼ä»åºç¼ç ï¼{mES_In.warehouseNo}"); |
| | | |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(Roadway); |
| | | |
| | | Dt_Task setask = BaseDal.QueryData(x => x.PalletCode == mES_In.containerNo).FirstOrDefault(); |
| | | if (setask != null) return apiResponse.Error($"WMSå·²æå½åä»»å¡ï¼ä¸å¯éå¤ä¸åï¼æçç¼å·ï¼{mES_In.containerNo}"); |
| | | |
| | | Dt_Warehouse dt_Warehouse = _warehouseService.QueryWarehouse(mES_In.warehouseNo); |
| | | int LocationType = 1; |
| | | string Roadway = "0"; |
| | | |
| | | string SourceAddress = mES_In.startPosition; |
| | | string TargetAddress = ""; |
| | | string CurrentAddress = mES_In.startPosition; |
| | | string NextAddress = ""; |
| | | int WarehouseId = 0; |
| | | |
| | | if (dt_Warehouse != null) |
| | | { |
| | | if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMYL) |
| | | { |
| | | if (mES_In.containerType == "2") LocationType = 2; |
| | | } |
| | | else if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMCP) |
| | | { |
| | | LocationType = 3; |
| | | } |
| | | Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType); |
| | | if (Roadway == "0") return apiResponse.Error($"WMSæªè½æ¥è¯¢é对åºå··éç¼å·ï¼ä»åºç¼ç ï¼{mES_In.warehouseNo}"); |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(Roadway); |
| | | NextAddress = _Roadwayinfo.InStationCode; |
| | | WarehouseId = dt_Warehouse.WarehouseId; |
| | | } |
| | | else |
| | | { |
| | | TargetAddress = mES_In.endPosition; |
| | | NextAddress = mES_In.endPosition; |
| | | } |
| | | Dt_Task task = new Dt_Task(); |
| | | task.TaskNum = mES_In.transNo; |
| | | task.PalletCode = mES_In.containerNo; |
| | |
| | | task.Roadway = Roadway; |
| | | task.TaskType = (int)TaskTypeEnum.Inbound; |
| | | task.TaskStatus = (int)InTaskStatusEnum.InNew; |
| | | task.SourceAddress = mES_In.startPosition; |
| | | task.TargetAddress = ""; |
| | | task.CurrentAddress = mES_In.startPosition; |
| | | task.NextAddress = _Roadwayinfo.InStationCode; |
| | | task.WarehouseId = dt_Warehouse.WarehouseId; |
| | | task.SourceAddress = SourceAddress; |
| | | task.TargetAddress = TargetAddress; |
| | | task.CurrentAddress = CurrentAddress; |
| | | task.NextAddress = NextAddress; |
| | | task.WarehouseId = WarehouseId; |
| | | task.OrderNo = mES_In.transDate.ToString(); |
| | | task.Grade = 1; |
| | | task.Creater = "MES"; |
| | | task.CreateDate = DateTime.Now; |
| | | |
| | | Dt_StockInfo dt_StockInfo = new Dt_StockInfo(); |
| | | /*Dt_StockInfo dt_StockInfo = new Dt_StockInfo(); |
| | | dt_StockInfo.PalletCode = task.PalletCode; |
| | | dt_StockInfo.PalletType = task.PalletType; |
| | | dt_StockInfo.WarehouseId = task.WarehouseId; |
| | | dt_StockInfo.StockStatus = (int)StockStatusEmun.å
¥åºä¸; |
| | | dt_StockInfo.Creater = "MWS"; |
| | | dt_StockInfo.CreateDate = DateTime.Now; |
| | | dt_StockInfo.CreateDate = DateTime.Now;*/ |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.AddData(task); |
| | | _stockInfoService.Repository.AddData(dt_StockInfo); |
| | | //_stockInfoService.Repository.AddData(dt_StockInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | WriteLog.GetLog("æ¥æ¶MESå
¥åºä»»å¡ä¸å").Write($"åæ°ï¼{mES_In.containerNo}", $"å
¥åºä»»å¡æ·»å æå"); |
| | | return apiResponse.OK(); |
| | |
| | | mesInResult.ContainerNo = ContainerNo; |
| | | mesInResult.LocationCode = LocationCode; |
| | | mES_Parame = HttpHelper.Post<MES_parameter>(MES_InReporttask, mesInResult, "å
¥åºä»»å¡æ±æ¥"); |
| | | WriteLog.GetLog("å
¥åºä»»å¡å馿¥å£").Write($"订åç¼å·ï¼{TransNo}ï¼æ§è¡ç»æï¼{Result}ï¼æ§è¡ç»ææè¿°ï¼{ResultMsg}ï¼æçæ¡ç ï¼{ContainerNo}ï¼åºä½ç¼å·ï¼{LocationCode}ï¼æ¥æ¶å°çååï¼{mesInResult.ToJson()}", $"ä»»å¡ä¸æ¥ä¿¡æ¯"); |
| | | return mES_Parame; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | mesInResult.Result = Result; |
| | | mesInResult.ResultMsg = ResultMsg; |
| | | mES_Parame = HttpHelper.Post<MES_parameter>(MES_OutReporttask, mesInResult, "åºåºä»»å¡æ±æ¥"); |
| | | WriteLog.GetLog("åºåºä»»å¡å馿¥å£").Write($"订åç¼å·ï¼{TransNo}ï¼æ§è¡ç»æï¼{Result}ï¼æ§è¡ç»ææè¿°ï¼{ResultMsg}ï¼æ¥æ¶å°çååï¼{mesInResult.ToJson()}", $"ä»»å¡ä¸æ¥ä¿¡æ¯"); |
| | | return mES_Parame; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | using MailKit.Search; |
| | | using Microsoft.Extensions.Logging; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; |
| | | using Org.BouncyCastle.Math.EC; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | |
| | | { |
| | | public partial class TaskService |
| | | { |
| | | //WCSè·åä»»å¡è¿è¡åé¦ |
| | | public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask) |
| | | { |
| | | WebResponseContent webResponse = new WebResponseContent(); |
| | |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°ä»»å¡ä¿¡æ¯ï¼æçæ¡ç ï¼{wCSTask.PalletCode}"); |
| | | if (task.TaskStatus == (int)InTaskStatusEnum.InNew) |
| | | { |
| | | //è¿è¡è°åè¾é线ä¸åä»»å¡ |
| | | WCSginseng WCS_Parame = PLC_IssueTasks(task.TaskId,int.Parse(task.Roadway),task.TaskNum,task.PalletCode, int.Parse(task.PalletType), wCSTask.FromPoint,task.NextAddress,""); |
| | | if (WCS_Parame.IsSuccess) |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting; |
| | | MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Start", "æä½æå", task.PalletCode, ""); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting; |
| | | MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Start","æä½æå",task.PalletCode,""); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | //è¿è¡ä¿®æ¹æ°æ®åº |
| | | BaseDal.UpdateData(task); |
| | | return webResponse.OK("ä¸åè¾éçº¿ä»»å¡æå"); |
| | | } |
| | | else |
| | | { |
| | | return webResponse.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | WCStask wcstaskinfo = new WCStask(); |
| | | wcstaskinfo.TaskId = task.TaskId; |
| | | wcstaskinfo.AreaNo = int.Parse(task.Roadway); |
| | | wcstaskinfo.TransNo = task.TaskNum; |
| | | wcstaskinfo.ContainerNo = task.PalletCode; |
| | | wcstaskinfo.ContainerType = int.Parse(task.PalletType); |
| | | wcstaskinfo.FromPoint = wCSTask.FromPoint; |
| | | wcstaskinfo.ToPoint = task.NextAddress; |
| | | wcstaskinfo.ToStation = ""; |
| | | //è¿è¡ä¿®æ¹æ°æ®åº |
| | | BaseDal.UpdateData(task); |
| | | return webResponse.OK(data: task.ToJson()); |
| | | } |
| | | else |
| | | { |
| | | return webResponse.Error("ä¸åè¾é线任å¡å¤±è´¥ï¼åå ï¼" + WCS_Parame.Message); |
| | | return webResponse.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | | else |
| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Microsoft.Extensions.Logging; |
| | | using Org.BouncyCastle.Math.EC; |
| | | using SqlSugar; |
| | | using System.ComponentModel; |
| | | using System.Net; |
| | | using System.Reflection; |
| | | using System.Reflection.Emit; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.OtherEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.Inbound; |
| | | using WIDESEA_DTO.Task; |
| | |
| | | { |
| | | public partial class TaskService : ServiceBase<Dt_Task, IRepository<Dt_Task>>, ITaskService |
| | | { |
| | | private readonly ILogger<TaskService> _logger; |
| | | private readonly IMapper _mapper; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IStockInfoService _stockInfoService; |
| | | private readonly ILocationInfoService _locationInfoService; |
| | | private readonly IWarehouseService _warehouseService; |
| | | private readonly IRoadWayinfoService _roadWayinfoService; |
| | | |
| | | private Timer _timer; |
| | | public IRepository<Dt_Task> Repository => BaseDal; |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | |
| | | |
| | | public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService, |
| | | public TaskService(ILogger<TaskService> logger, IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService, |
| | | IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService) : base(BaseDal) |
| | | { |
| | | _logger = logger; |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _stockInfoService = stockInfoService; |
| | |
| | | private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | switch (wcsTaskType) |
| | | try |
| | | { |
| | | case 1: |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | int loctype = 0; |
| | | if (task.Roadway == "1" || task.Roadway == "2") |
| | | { |
| | | if(task.PalletType=="1") loctype = (int)LocationTypeEnum.SmallPallet; |
| | | else if(task.PalletType=="2") loctype = (int)LocationTypeEnum.MediumPallet; |
| | | } |
| | | else |
| | | { |
| | | loctype = (int)LocationTypeEnum.LargePallet; |
| | | } |
| | | //æ¥æ¾è´§ä½ï¼æ´æ°ä»»å¡ |
| | | Dt_LocationInfo dt_Location=_locationInfoService.GetLocation(task.Roadway, loctype); |
| | | Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column); |
| | | if(ShallowCargoHold==null) return content.Error($"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,è´§ä½ç¼å·:{dt_Location.LocationCode}çæµ
è´§ä½"); |
| | | if(ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},æ¥æ¾çè´§ä½æµ
è´§ä½æè´§ï¼è´§ä½ç¼å·ï¼{ShallowCargoHold.LocationCode}"); |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | |
| | | if(task.TargetAddress == "") |
| | | { |
| | | int loctype = 0; |
| | | if (task.Roadway == "1" || task.Roadway == "2") |
| | | { |
| | | if (task.PalletType == "1") loctype = (int)LocationTypeEnum.SmallPallet; |
| | | else if (task.PalletType == "2") loctype = (int)LocationTypeEnum.MediumPallet; |
| | | } |
| | | else |
| | | { |
| | | loctype = (int)LocationTypeEnum.LargePallet; |
| | | } |
| | | |
| | | task.TargetAddress = dt_Location.LocationCode; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress= dt_Location.LocationCode; |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | dt_Location.LocationStatus = (int)LocationStatusEnum.Lock; |
| | | //æ¥æ¾è´§ä½ï¼æ´æ°ä»»å¡ |
| | | Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype); |
| | | Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column); |
| | | if (ShallowCargoHold == null) return content.Error($"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,è´§ä½ç¼å·:{dt_Location.LocationCode}çæµ
è´§ä½"); |
| | | if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},æ¥æ¾çè´§ä½æµ
è´§ä½æè´§ï¼è´§ä½ç¼å·ï¼{ShallowCargoHold.LocationCode}"); |
| | | |
| | | _locationInfoService.UpdateData(dt_Location); |
| | | BaseDal.UpdateData(task); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | |
| | | |
| | | case 2: |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Finish", "æä½æå", task.PalletCode, task.TargetAddress); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TargetAddress = dt_Location.LocationCode; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = dt_Location.LocationCode; |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | |
| | | task.TaskStatus = (int)InTaskStatusEnum.SC_OutFinish; |
| | | BaseDal.DeleteData(task); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | default: |
| | | return WebResponseContent.Instance.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | dt_Location.LocationStatus = (int)LocationStatusEnum.Lock; |
| | | |
| | | Dt_StockInfo dt_StockInfo = new Dt_StockInfo(); |
| | | dt_StockInfo.PalletCode = task.PalletCode; |
| | | dt_StockInfo.PalletType = task.PalletType; |
| | | dt_StockInfo.WarehouseId = task.WarehouseId; |
| | | dt_StockInfo.LocationCode = dt_Location.LocationCode; |
| | | dt_StockInfo.StockStatus = (int)StockStatusEmun.å
¥åºä¸; |
| | | dt_StockInfo.Creater = "MWS"; |
| | | dt_StockInfo.CreateDate = DateTime.Now; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoService.AddData(dt_StockInfo); |
| | | _locationInfoService.UpdateData(dt_Location); |
| | | BaseDal.UpdateData(task); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | string Resultplc = MesInTaskStatusEnum.å
¥åºå®æ.GetDescription(); |
| | | MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "æä½æå", task.PalletCode, task.TargetAddress); |
| | | if (mES_PCLParameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK($"è¾é线任å¡å·²åé¦è³ä¸æ¸¸ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg); |
| | | } |
| | | } |
| | | case 2: |
| | | string Resultsc = MesInTaskStatusEnum.å
¥åºå®æ.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, Resultsc, "æä½æå", task.PalletCode, task.TargetAddress); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault(); |
| | | Dt_LocationInfo dt_LocationInfo=_locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault(); |
| | | |
| | | dt_Stockowc.StockStatus = (int)StockStatusEmun.å·²å
¥åº; |
| | | dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | task.TaskStatus = (int)InTaskStatusEnum.InFinish; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoService.UpdateData(dt_Stockowc); |
| | | _locationInfoService.UpdateData(dt_LocationInfo); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | default: |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content.Error($"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private WebResponseContent HandleOutboundTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | switch (wcsTaskType) |
| | | try |
| | | { |
| | | case 1: |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, "Finish", "æä½æå"); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; |
| | | BaseDal.DeleteData(task); |
| | | return content.OK($"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | case 2: |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway); |
| | | task.CurrentAddress = _Roadwayinfo.OutStationCode; |
| | | task.NextAddress = task.TargetAddress; |
| | | task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish; |
| | | BaseDal.UpdateData(task); |
| | | return content.OK($"å·²æ¥æ¶åºåºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | default: |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | string Resultplc = MesOutTaskStatusEnum.å°è¾¾ç®çå°.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, Resultplc, "æä½æå"); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | return content.OK($"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | case 2: |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway); |
| | | task.CurrentAddress = _Roadwayinfo.OutStationCode; |
| | | task.NextAddress = task.TargetAddress; |
| | | task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish; |
| | | |
| | | Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault(); |
| | | Dt_LocationInfo dt_LocationInfo = _locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault(); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoService.DeleteData(dt_Stockowc); |
| | | _locationInfoService.DeleteData(dt_LocationInfo); |
| | | BaseDal.UpdateData(task); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | |
| | | return content.OK($"å·²æ¥æ¶åºåºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | default: |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content.Error($"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private WebResponseContent HandleRelocationTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | | WebResponseContent responseContent = new WebResponseContent(); |
| | | if (wcsTaskType == 2) |
| | | { |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish; |
| | | BaseDal.UpdateData(task); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶ç§»åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | //䏿¥MESå åæºç§»åºä»»å¡ |
| | | string Resultplc = MesOutTaskStatusEnum.å°è¾¾ç®çå°.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish; |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶ç§»åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return responseContent.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | | return WebResponseContent.Instance.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using MailKit.Search; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.Extensions.Hosting; |
| | | using Microsoft.Extensions.Logging; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics; |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Reflection.Metadata; |
| | | using System.Security.Policy; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.Log; |
| | | using WIDESEA_Common.OtherEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.Inbound; |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_ITaskInfoService; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_ITaskInfoService.ITaskService; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | | public partial class WMSCruJob : IHostedService, IDisposable |
| | | { |
| | | private readonly ILogger<WMSCruJob> _logger; |
| | | private Timer _timer; |
| | | private readonly ITaskService _taskService; |
| | | private readonly ILocationInfoService _locationInfoService; |
| | | private readonly IStockInfoService _stockInfoService; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | |
| | | |
| | | |
| | | |
| | | public Task StartAsync(CancellationToken cancellationToken) |
| | | { |
| | | _timer = new Timer(DoWorkWheel, null, TimeSpan.Zero, TimeSpan.FromSeconds(3)); |
| | | return Task.CompletedTask; |
| | | } |
| | | private void DoWorkWheel(object state) |
| | | { |
| | | // å®ä¹ç¶æå¸¸éï¼é¿å
éæ³æ°å |
| | | const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish; |
| | | const int OUT_NEW = (int)OutTaskStatusEnum.OutNew; |
| | | const int SC_OUT_FINISH = (int)OutTaskStatusEnum.SC_OutFinish; |
| | | const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting; |
| | | const int SC_OUT_EXECUTING = (int)OutTaskStatusEnum.SC_OutExecuting; |
| | | const int RELOCATION_EXECUTING = (int)RelocationTaskStatusEnum.RelocationExecuting; |
| | | const int PLC_OUT_EXECUTING = (int)OutTaskStatusEnum.PLC_OutExecuting; |
| | | |
| | | // è·åå½å任塿°æ® |
| | | List<Dt_Task> allTasks = _taskService.Repository.QueryData(); |
| | | |
| | | // è·åå··éè¶
è¿3个任å¡ç路段 |
| | | HashSet<string> excludedRoadways = allTasks |
| | | .Where(x => x.NumberSsuances > 3) |
| | | .Select(x => x.Roadway) |
| | | .Distinct() |
| | | .ToHashSet(); |
| | | |
| | | // è¿æ»¤éè¦å¤ççä»»å¡ |
| | | List<Dt_Task> tasksToProcess = allTasks |
| | | .Where(x => |
| | | (x.TaskStatus == PLC_IN_FINISH || |
| | | x.TaskStatus == OUT_NEW || |
| | | x.TaskStatus == SC_OUT_FINISH) && |
| | | !excludedRoadways.Contains(x.Roadway)) |
| | | .ToList(); |
| | | |
| | | // æç¶æåç»å¤çï¼åå°é夿¥è¯¢ |
| | | ProcessInAndNewTasks(tasksToProcess, allTasks, excludedRoadways); //ä¸åå åæº |
| | | ProcessOutFinishTasks(tasksToProcess, allTasks); //ä¸åè¾éçº¿ä»»å¡ |
| | | } |
| | | |
| | | private void ProcessInAndNewTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks, HashSet<string> excludedRoadways) |
| | | { |
| | | const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish; |
| | | const int OUT_NEW = (int)OutTaskStatusEnum.OutNew; |
| | | const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting; |
| | | const int SC_OUT_EXECUTING = (int)OutTaskStatusEnum.SC_OutExecuting; |
| | | const int RELOCATION_EXECUTING = (int)RelocationTaskStatusEnum.RelocationExecuting; |
| | | const int RELOCCATION_NEW = (int)RelocationTaskStatusEnum.RelocationNew; |
| | | |
| | | var inAndNewTasks = tasksToProcess |
| | | .Where(x => x.TaskStatus == PLC_IN_FINISH || x.TaskStatus == OUT_NEW).OrderBy(x=>x.CreateDate) |
| | | .ToList(); |
| | | |
| | | foreach (var task in inAndNewTasks) |
| | | { |
| | | // æ£æ¥åä¸å··éæ¯å¦ææ£å¨æ§è¡çä»»å¡ |
| | | bool hasExecutingTask = allTasks.Any(x => |
| | | x.TaskId != task.TaskId && |
| | | x.Roadway == task.Roadway && |
| | | (x.TaskStatus == SC_IN_EXECUTING || |
| | | x.TaskStatus == SC_OUT_EXECUTING || |
| | | x.TaskStatus == RELOCATION_EXECUTING)); |
| | | |
| | | if (hasExecutingTask) |
| | | continue; |
| | | |
| | | //夿æ¯å¦éè¦ç§»åº |
| | | WebResponseContent webResponse=JudgmentIsRelocations(task); |
| | | if (!webResponse.Status) continue; |
| | | |
| | | // ä¸åå åæºä»»å¡ |
| | | WCSginseng result = _taskService.SC_IssueTasks( |
| | | task.TaskId, |
| | | int.Parse(task.Roadway), |
| | | task.TaskNum, |
| | | task.PalletCode, |
| | | int.Parse(task.PalletType), |
| | | task.CurrentAddress, |
| | | task.NextAddress, |
| | | task.TargetAddress); |
| | | |
| | | UpdateTaskStatus(task, result, |
| | | successStatus: task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING,1); |
| | | } |
| | | } |
| | | |
| | | private void ProcessOutFinishTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks) |
| | | { |
| | | const int SC_OUT_FINISH = (int)OutTaskStatusEnum.SC_OutFinish; |
| | | const int PLC_OUT_EXECUTING = (int)OutTaskStatusEnum.PLC_OutExecuting; |
| | | |
| | | var outFinishTasks = tasksToProcess |
| | | .Where(x => x.TaskStatus == SC_OUT_FINISH) |
| | | .ToList(); |
| | | |
| | | foreach (var task in outFinishTasks) |
| | | { |
| | | // æ£æ¥åä¸å··éæ¯å¦æå
¶ä»å·²å®æçä»»å¡ |
| | | bool hasOtherFinishTask = allTasks.Any(x => |
| | | x.Roadway == task.Roadway && |
| | | x.TaskStatus == SC_OUT_FINISH && |
| | | x.TaskId != task.TaskId); |
| | | |
| | | if (hasOtherFinishTask) |
| | | continue; |
| | | |
| | | // ä¸åPLCä»»å¡ |
| | | WCSginseng result = _taskService.PLC_IssueTasks( |
| | | task.TaskId, |
| | | int.Parse(task.Roadway), |
| | | task.TaskNum, |
| | | task.PalletCode, |
| | | int.Parse(task.PalletType), |
| | | task.CurrentAddress, |
| | | task.NextAddress, |
| | | ""); |
| | | |
| | | UpdateTaskStatus(task, result, PLC_OUT_EXECUTING,2); |
| | | } |
| | | } |
| | | |
| | | private void UpdateTaskStatus(Dt_Task task, WCSginseng result, int successStatus,int statype) |
| | | { |
| | | if (result.IsSuccess) |
| | | { |
| | | |
| | | task.TaskStatus = successStatus; |
| | | if(task.TaskStatus== (int)OutTaskStatusEnum.SC_OutExecuting) |
| | | { |
| | | string Result = MesOutTaskStatusEnum.åºåºå¼å§.GetDescription(); |
| | | //è°å䏿¸¸ç³»ç»åé¦å¼å§ä»»å¡ |
| | | _taskService.OutStoreDocCallback(task.TaskNum,Result, "æä½æå"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | task.Remark = result.Message; |
| | | task.NumberSsuances++; |
| | | } |
| | | |
| | | _taskService.Repository.UpdateData(task); |
| | | } |
| | | |
| | | |
| | | public Task StopAsync(CancellationToken cancellationToken) |
| | | { |
| | | _timer?.Dispose(); |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | public void Dispose() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 夿巷éå
ç§»åº |
| | | /// </summary> |
| | | /// <param name="TaskNum"></param> |
| | | /// <param name="SourceAddress"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent JudgmentIsRelocations(Dt_Task dt_Task) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | string Locationcodeadd = dt_Task.TaskType == (int)TaskTypeEnum.Inbound ? dt_Task.NextAddress : dt_Task.CurrentAddress; |
| | | |
| | | Dt_LocationInfo dt_Location = _locationInfoService.Repository.QueryData(x => x.LocationCode == Locationcodeadd).FirstOrDefault(); |
| | | if (dt_Location.Depth == 1 || dt_Location.RoadwayNo == "5") return content.OK(); |
| | | int locrow = judgmentRow(dt_Location.RoadwayNo, dt_Location.Row); |
| | | Dt_LocationInfo shallowLocation = _locationInfoService.Repository.QueryData(x => x.RoadwayNo == dt_Location.RoadwayNo && x.Row == locrow && x.Layer == dt_Location.Layer && x.Column == dt_Location.Column).FirstOrDefault(); |
| | | if (shallowLocation.LocationStatus == (int)LocationStatusEnum.Free) return content.OK(); |
| | | if (shallowLocation.LocationStatus != (int)(int)LocationStatusEnum.InStock) return content.Error(); |
| | | |
| | | //夿æ¯å¦æç§»åºä»»å¡ |
| | | var TransferTask = _taskService.Repository.QueryData(x=>x.TaskStatus== (int)RelocationTaskStatusEnum.RelocationNew && x.CurrentAddress== shallowLocation.LocationCode).FirstOrDefault(); |
| | | if(TransferTask != null) |
| | | { |
| | | //è¿è¡ä¸åç»å åæºä»»å¡ |
| | | WCSginseng result = _taskService.SC_IssueTasks( |
| | | TransferTask.TaskId, |
| | | int.Parse(TransferTask.Roadway), |
| | | TransferTask.TaskNum, |
| | | TransferTask.PalletCode, |
| | | int.Parse(TransferTask.PalletType), |
| | | TransferTask.CurrentAddress, |
| | | TransferTask.NextAddress, |
| | | TransferTask.TargetAddress); |
| | | if (result.IsSuccess) |
| | | { |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"ä¸åå åæºä»»å¡å¤±è´¥ï¼åå ï¼{result.Message}", $"çæç§»åºä»»å¡:GenerateTransferTask"); |
| | | return content.Error(); |
| | | } |
| | | } |
| | | |
| | | //çæç§»åºä»»å¡ï¼è¿è¡ä¸å |
| | | return content =GenerateTransferTask(shallowLocation.LocationCode); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"å¤æç§»åºå¤±è´¥ï¼åå ï¼{ex.Message}", $"夿巷éå
ç§»åºæ¹æ³:JudgmentIsRelocations"); |
| | | return content.Error(); |
| | | |
| | | } |
| | | } |
| | | |
| | | private int judgmentRow(string RoadwayNo,int locrow) |
| | | { |
| | | if (RoadwayNo == "1" || RoadwayNo == "3") |
| | | { |
| | | return locrow == 1 ? 2 : 3; |
| | | } |
| | | else if (RoadwayNo == "2" || RoadwayNo == "4") |
| | | { |
| | | return locrow == 5 ? 6 : 7; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent GenerateTransferTask(string shallowLocation) |
| | | { |
| | | WebResponseContent webResponse=new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_LocationInfo OriginalLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault(); |
| | | Dt_StockInfo dt_StockInfo = _stockInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault(); |
| | | Dt_LocationInfo newLocation = _locationInfoService.GetLocation(OriginalLocation.RoadwayNo, OriginalLocation.LocationType); |
| | | List<Dt_LocationInfo> dt_Locations = new List<Dt_LocationInfo>(); |
| | | |
| | | MES_parameter mES_Parame = _taskService.ApplicationChangeStorageLocation(dt_StockInfo.PalletCode, OriginalLocation.LocationCode, newLocation.LocationCode); |
| | | if (mES_Parame != null) |
| | | { |
| | | if (mES_Parame.Result == "Y") |
| | | { |
| | | //è¿è¡çæä»»å¡ï¼ä¸åä»»å¡è³MES |
| | | Dt_Task task = new Dt_Task(); |
| | | task.TaskNum = "0"; |
| | | task.PalletCode = dt_StockInfo.PalletCode; |
| | | task.PalletType = dt_StockInfo.PalletType; |
| | | task.Roadway = OriginalLocation.RoadwayNo; |
| | | task.TaskType = (int)TaskTypeEnum.Relocation; |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationNew; |
| | | task.SourceAddress = OriginalLocation.LocationCode; |
| | | task.TargetAddress = newLocation.LocationCode; |
| | | task.CurrentAddress = OriginalLocation.LocationCode; |
| | | task.NextAddress = newLocation.LocationCode; |
| | | task.WarehouseId = OriginalLocation.WarehouseId; |
| | | task.OrderNo = ""; |
| | | task.Grade = 1; |
| | | task.Creater = "MES"; |
| | | task.CreateDate = DateTime.Now; |
| | | |
| | | OriginalLocation.LocationStatus = (int)LocationStatusEnum.Lock; |
| | | newLocation.LocationStatus = (int)LocationStatusEnum.Lock; |
| | | dt_StockInfo.StockStatus = (int)StockStatusEmun.ç§»åºéå®; |
| | | |
| | | dt_Locations.Add(OriginalLocation); |
| | | dt_Locations.Add(newLocation); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _taskService.AddData(task); |
| | | _locationInfoService.UpdateData(dt_Locations); |
| | | _stockInfoService.UpdateData(dt_StockInfo); |
| | | //_stockInfoService.Repository.AddData(dt_StockInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | //è¿è¡ä¸åç»å åæºä»»å¡ |
| | | WCSginseng result = _taskService.SC_IssueTasks( |
| | | task.TaskId, |
| | | int.Parse(task.Roadway), |
| | | task.TaskNum, |
| | | task.PalletCode, |
| | | int.Parse(task.PalletType), |
| | | task.CurrentAddress, |
| | | task.NextAddress, |
| | | task.TargetAddress); |
| | | if (result.IsSuccess) |
| | | { |
| | | return webResponse.OK(); |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"ä¸åå åæºä»»å¡å¤±è´¥ï¼åå ï¼{result.Message}", $"çæç§»åºä»»å¡:GenerateTransferTask"); |
| | | return webResponse.Error(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"ç³è¯·å¨ä½å¼å¨ï¼MESä¸å
许移å¨", $"çæç§»åºä»»å¡:GenerateTransferTask"); |
| | | return webResponse.Error(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"ç³è¯·å¨ä½å¼å¨ï¼MESè¿å为空", $"çæç§»åºä»»å¡:GenerateTransferTask"); |
| | | return webResponse.Error(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | WriteLog.GetLog("夿巷éå
ç§»åº").Write($"çæç§»åºä»»å¡å¤±è´¥ï¼{ex.Message}", $"çæç§»åºä»»å¡:GenerateTransferTask"); |
| | | return webResponse.Error(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | } |
| | | |
| | | //ä»»å¡å®æ |
| | | [HttpPost, Route("TaskCompleted"), AllowAnonymous] |
| | | public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask) |
| | | { |
| | | return Service.TaskCompleted(wCSTask); |
| | | } |
| | | |
| | | //WCSå
¥åºä»»å¡è·å |
| | | [HttpPost, Route("PalletInboundTask")] |
| | | [HttpPost, Route("PalletInboundTask"), AllowAnonymous] |
| | | public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask) |
| | | { |
| | | return Service.PalletInboundTask(wCSTask); |
| | |
| | | /// <summary> |
| | | /// ä»»å¡ |
| | | /// </summary> |
| | | [Route("api/Task")] |
| | | [Route("api/WCSTask")] |
| | | [ApiController] |
| | | public class WCSTaskController : ApiBaseController<ITaskService, Dt_Task> |
| | | { |
| | |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using Autofac; |
| | | using Autofac.Core; |
| | | using Autofac.Extensions.DependencyInjection; |
| | |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Converters; |
| | | using Newtonsoft.Json.Serialization; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Authorization; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | using WIDESEA_Core.Helper; |
| | | //using WIDESEA_Core.HostedService; |
| | | using WIDESEA_Core.Middlewares; |
| | | using WIDESEA_TaskInfoService; |
| | | using WIDESEA_WMSServer.Filter; |
| | | |
| | | var builder = WebApplication.CreateBuilder(args); |
| | |
| | | builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>()); |
| | | Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); |
| | | |
| | | builder.Services.AddHostedService<WMSCruJob>(); |
| | | |
| | | var app = builder.Build(); |
| | | |
| | |
| | | "AllowedHosts": "*", |
| | | "ConnectionStringsEncryption": false, |
| | | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true |
| | | "MES_InReporttask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //å
¥åºåé¦ä¿¡æ¯ |
| | | "MES_OutReporttask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //åºåºåé¦ä¿¡æ¯ |
| | | "MES_InventoryUpdateApply": "http://172.18.195.201:8889/api/Task/ReceiveTask", //å¨ä½å¼å¨ç³è¯· |
| | | "MES_InventoryUpdateCallback": "http://172.18.195.201:8889/api/Task/ReceiveTask", //å¨ä½å¼å¨ç³è¯· |
| | | "MES_TaskErrorInfoCallback": "http://172.18.195.201:8889/api/Task/ReceiveTask", //ä»»å¡å¼å¸¸ä¸æ¥ |
| | | "MES_InReporttask": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InStoreDocCallback", //å
¥åºåé¦ä¿¡æ¯ |
| | | "MES_OutReporttask": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/OutStoreDocCallback", //åºåºåé¦ä¿¡æ¯ |
| | | "MES_InventoryUpdateApply": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InventoryUpdateApply", //å¨ä½å¼å¨ç³è¯· |
| | | "MES_InventoryUpdateCallback": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InventoryUpdateCallback", //å¨ä½å¼å¨ç³è¯· |
| | | "MES_TaskErrorInfoCallback": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/TaskErrorInfoCallback", //ä»»å¡å¼å¸¸ä¸æ¥ |
| | | |
| | | "WCS_SendConveyorTask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //è¾é线任å¡ä¸å |
| | | "WCS_SendStackerTask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //å åæºä»»å¡ä¸å |