1
yangpeixing
2026-01-22 2a978847c0dfef510349b097ef8202afe5647997
1
已添加6个文件
已重命名1个文件
已删除9个文件
已修改28个文件
1164 ■■■■■ 文件已修改
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3eab47dc-c2d9-4ba0-9dc4-bcf3f82133e3.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6b3736ba-630f-476c-9f4e-0d99fe3ed3a0.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/020fd3d6-844d-4fdd-aa57-31bb4472f9ec.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2be4e437-a1a9-4222-a31d-6c930840bc34.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/46068755-0c27-498e-b4ef-d2ee7f39e8af.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/475e0097-8d79-4ade-8115-2df3f6920ebc.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/495dcb7d-0808-4295-8344-22604b0512d1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8243996f-363c-4613-87cd-1d30cb87c16e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/829dbe83-34f3-4175-8352-81d9edaa8261.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/834cf2d4-40eb-4690-bfa4-bad052f0e898.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8e7ab058-25f7-482b-9868-d2c3a9414aa5.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/aa1655b5-bbae-48ea-b7d3-5716a47f67b4.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b8266b88-93a1-4523-87b3-6859ba57591b.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bd6a42ad-fce0-45bc-9a92-36c11b814c82.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c6cf5423-fd36-48c2-aafd-a6ffc7ee49e5.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_Common/HouseStockDetail.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/WarehouseEnum.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/TakeStockOrderCPService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs 235 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
吉安PDA/common/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
吉安PDA/pages/stash/CPinboundorder.vue 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
吉安PDA/pages/stash/FLraworderboxing.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
吉安PDA/pages/stash/Syncretism.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
吉安PDA/pages/stash/YSraworderboxing.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin
Binary files differ
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin
Binary files differ
WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3eab47dc-c2d9-4ba0-9dc4-bcf3f82133e3.vsidx
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6b3736ba-630f-476c-9f4e-0d99fe3ed3a0.vsidx
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo
Binary files differ
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
@@ -3,52 +3,52 @@
  "WorkspaceRootPath": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgv\\rgvjob_l2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgv\\rgvjob_l2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\stackercranejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -78,11 +78,15 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 13,
          "SelectedChildIndex": 18,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
            },
            {
              "$type": "Document",
@@ -92,49 +96,53 @@
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "ViewState": "AgIAAIYAAAAAAAAAAAAuwJsAAAAZAAAAAAAAAA==",
              "ViewState": "AgIAAKsAAAAAAAAAAAAQwL0AAAAyAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-11T00:40:43.019Z"
              "WhenOpened": "2026-01-11T00:40:43.019Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "DocumentIndex": 6,
              "Title": "StackerCraneJob_YS.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "ViewState": "AgIAAH8AAAAAAAAAAAAIwJoAAAAYAAAAAAAAAA==",
              "ViewState": "AgIAAIoAAAAAAAAAAAAQwJoAAAAYAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-10T03:13:51.591Z"
              "WhenOpened": "2026-01-10T03:13:51.591Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "DocumentIndex": 2,
              "Title": "StackerCraneJob_FL.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "ViewState": "AgIAAIIAAAAAAAAAAAAEwJsAAAAcAAAAAAAAAA==",
              "ViewState": "AgIAAIUAAAAAAAAAAAAEwJEAAAAJAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-10T02:30:29.849Z"
              "WhenOpened": "2026-01-10T02:30:29.849Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 1,
              "Title": "RGVJob_L2.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "ViewState": "AgIAAE0AAAAAAAAAAAAYwFUAAAAYAAAAAAAAAA==",
              "ViewState": "AgIAAFsAAAAAAAAAAAAYwFUAAAAYAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-09T06:57:14.268Z"
              "WhenOpened": "2026-01-09T06:57:14.268Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 10,
              "Title": "RGVJob_L1.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
@@ -142,31 +150,34 @@
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "ViewState": "AgIAAE0AAAAAAAAAAAAIwFUAAAAZAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-09T06:45:58.141Z"
              "WhenOpened": "2026-01-09T06:45:58.141Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 9,
              "Title": "appsettings.json",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAANAAAAAAAAAA==",
              "ViewState": "AgIAABUAAAAAAAAAAAAAACQAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2026-01-08T10:46:15.09Z"
              "WhenOpened": "2026-01-08T10:46:15.09Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 3,
              "Title": "CommonConveyorLineJob.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "ViewState": "AgIAAIsAAAAAAAAAAAAAwJsAAAB2AAAAAAAAAA==",
              "ViewState": "AgIAAHwAAAAAAAAAAAAAAJMAAADIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-08T09:45:25.115Z"
              "WhenOpened": "2026-01-08T09:45:25.115Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
@@ -182,7 +193,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 11,
              "Title": "TaskController.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
@@ -218,25 +229,26 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 4,
              "Title": "ITaskService.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "ViewState": "AgIAACgBAAAAAAAAAAAuwDgBAABaAAAAAAAAAA==",
              "ViewState": "AgIAAHUAAAAAAAAAAAAzwIUAAAAbAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-24T06:51:20.03Z"
              "WhenOpened": "2025-07-24T06:51:20.03Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 7,
              "Title": "TaskService.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAPIBAAAAAAAAAAAowAUCAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAO8BAAAAAAAAAAAowPQBAAAIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-23T05:44:58.595Z",
              "EditorCaption": ""
@@ -255,15 +267,16 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "DocumentIndex": 8,
              "Title": "ConveyorLineJob_BC.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "ViewState": "AgIAALsAAAAAAAAAAAAIwMwAAABCAAAAAAAAAA==",
              "ViewState": "AgIAAHYAAAAAAAAAAAAQwHkAAADlAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-23T04:01:37.222Z"
              "WhenOpened": "2025-07-23T04:01:37.222Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
@@ -279,15 +292,16 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 0,
              "Title": "RGVJob_BC.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
              "ViewState": "AgIAAE0AAAAAAAAAAAAswFsAAABvAAAAAAAAAA==",
              "ViewState": "AgIAAEcAAAAAAAAAAAAswGIAAABeAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-23T04:01:40.27Z"
              "WhenOpened": "2025-07-23T04:01:40.27Z",
              "EditorCaption": ""
            }
          ]
        }
WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -3,32 +3,36 @@
  "WorkspaceRootPath": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgv\\rgvjob_l1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgv\\rgvjob_l2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgv\\rgvjob_l2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\rgvjob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -43,12 +47,12 @@
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u5806\u579B\u673A\\stackercranejob_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u677F\u6750\u4ED3\\conveyorlinejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_tasks\\\u677F\u6750\u4ED3\\stackercranejob_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -65,10 +69,6 @@
    {
      "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_common\\stationtypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\stationtypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -78,47 +78,54 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 17,
          "SelectedChildIndex": 6,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 9,
              "Title": "StackerCraneJob_CP.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs",
              "ViewState": "AgIAAIYAAAAAAAAAAAAuwJsAAAAZAAAAAAAAAA==",
              "ViewState": "AgIAAKsAAAAAAAAAAAAQwL0AAAAyAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-11T00:40:43.019Z"
              "WhenOpened": "2026-01-11T00:40:43.019Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "DocumentIndex": 10,
              "Title": "StackerCraneJob_YS.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs",
              "ViewState": "AgIAAH8AAAAAAAAAAAAIwJoAAAAYAAAAAAAAAA==",
              "ViewState": "AgIAAIoAAAAAAAAAAAAQwJoAAAAYAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-10T03:13:51.591Z"
              "WhenOpened": "2026-01-10T03:13:51.591Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "DocumentIndex": 6,
              "Title": "StackerCraneJob_FL.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_FL.cs",
              "ViewState": "AgIAAIIAAAAAAAAAAAAEwJsAAAAcAAAAAAAAAA==",
              "ViewState": "AgIAAIUAAAAAAAAAAAAEwJEAAAAJAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-10T02:30:29.849Z"
              "WhenOpened": "2026-01-10T02:30:29.849Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
@@ -128,52 +135,53 @@
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs",
              "ViewState": "AgIAAE0AAAAAAAAAAAAYwFUAAAAYAAAAAAAAAA==",
              "ViewState": "AgIAAFsAAAAAAAAAAAAYwFUAAAAYAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-09T06:57:14.268Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 0,
              "Title": "RGVJob_L1.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs",
              "ViewState": "AgIAAE0AAAAAAAAAAAAIwFUAAAAZAAAAAAAAAA==",
              "ViewState": "AgIAAE0AAAAAAAAAAAAIwG4AAABtAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-09T06:45:58.141Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 11,
              "Title": "appsettings.json",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAANAAAAAAAAAA==",
              "ViewState": "AgIAABUAAAAAAAAAAAAAACQAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2026-01-08T10:46:15.09Z"
              "WhenOpened": "2026-01-08T10:46:15.09Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 7,
              "Title": "CommonConveyorLineJob.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
              "ViewState": "AgIAAIsAAAAAAAAAAAAAwJsAAAB2AAAAAAAAAA==",
              "ViewState": "AgIAAHwAAAAAAAAAAAAAAJMAAADIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-08T09:45:25.115Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "DocumentIndex": 14,
              "Title": "TaskService_Operate.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService_Operate.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService_Operate.cs",
@@ -185,7 +193,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 12,
              "Title": "TaskController.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
@@ -197,7 +205,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 14,
              "DocumentIndex": 15,
              "Title": "Dt_Task.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
@@ -209,7 +217,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 15,
              "DocumentIndex": 16,
              "Title": "StationTypeEnum.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\StationTypeEnum.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\StationTypeEnum.cs",
@@ -221,32 +229,33 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 8,
              "Title": "ITaskService.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "ViewState": "AgIAACgBAAAAAAAAAAAuwDgBAABaAAAAAAAAAA==",
              "ViewState": "AgIAAHUAAAAAAAAAAAAzwIUAAAAbAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-24T06:51:20.03Z"
              "WhenOpened": "2025-07-24T06:51:20.03Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 3,
              "Title": "TaskService.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAPIBAAAAAAAAAAAowAUCAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAO8BAAAAAAAAAAAowPQBAAAIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-23T05:44:58.595Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "DocumentIndex": 13,
              "Title": "StackerCraneJob_BC.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\StackerCraneJob_BC.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\StackerCraneJob_BC.cs",
@@ -258,31 +267,33 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "DocumentIndex": 4,
              "Title": "ConveyorLineJob_BC.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs",
              "ViewState": "AgIAALsAAAAAAAAAAAAIwMwAAABCAAAAAAAAAA==",
              "ViewState": "AgIAADYAAAAAAAAAAAAIwEEAAAANAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-23T04:01:37.222Z"
              "WhenOpened": "2025-07-23T04:01:37.222Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 16,
              "DocumentIndex": 1,
              "Title": "TaskTypeEnum.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "ViewState": "AgIAAH0AAAAAAAAAAADgv5EAAAAaAAAAAAAAAA==",
              "ViewState": "AgIAAH4AAAAAAAAAAAArwG4AAAAIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-07-30T08:37:09.116Z"
              "WhenOpened": "2025-07-30T08:37:09.116Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 5,
              "Title": "RGVJob_BC.cs",
              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\RGVJob_BC.cs",
WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -153,7 +153,7 @@
                                                                {
                                                                    conveyorLine.SetValue(W_ConveyorLineDBName.W_ConveyorLine_ACK, true, item.StationCode);
                                                                    _taskService.UpdateTask(task, TaskStatusEnum.RGV_NEW, sourceAddress: item.StationCode, RGVCode: item.AGVStationCode);
                                                                    WebResponseContent responseContent = _taskService.LedShowTask(item.StationCode, task.PalletCode, task.TaskType);
                                                                    //WebResponseContent responseContent = _taskService.LedShowTask(item.StationCode, task.PalletCode, task.TaskType);
                                                                }
                                                            }
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/020fd3d6-844d-4fdd-aa57-31bb4472f9ec.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2be4e437-a1a9-4222-a31d-6c930840bc34.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/46068755-0c27-498e-b4ef-d2ee7f39e8af.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/475e0097-8d79-4ade-8115-2df3f6920ebc.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/495dcb7d-0808-4295-8344-22604b0512d1.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8243996f-363c-4613-87cd-1d30cb87c16e.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/829dbe83-34f3-4175-8352-81d9edaa8261.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/834cf2d4-40eb-4690-bfa4-bad052f0e898.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8e7ab058-25f7-482b-9868-d2c3a9414aa5.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/aa1655b5-bbae-48ea-b7d3-5716a47f67b4.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b8266b88-93a1-4523-87b3-6859ba57591b.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bd6a42ad-fce0-45bc-9a92-36c11b814c82.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c6cf5423-fd36-48c2-aafd-a6ffc7ee49e5.vsidx
Binary files differ
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs
@@ -72,6 +72,11 @@
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                }
                if (heightType == 1 && undefinedTypeEmptyLocations.Count == 0)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 3).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 3).ToList();
                }
                else if (heightType == 2)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs
@@ -63,25 +63,20 @@
                //未定义类型的空货位 
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenByDescending(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                if (heightType == 1)
                if (heightType == 2)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 10).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 10).ToList();
                }
                else if (heightType == 2)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                }
                else if (heightType == 3)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                }
                //else if (heightType == 3)
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                //}
                //else
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => false).ToList();
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs
@@ -14,7 +14,7 @@
        private readonly static object _locker_FL = new object();
        static List<LocationCache> locationCaches_FL= new List<LocationCache>();
        static List<LocationCache> locationCaches_FL = new List<LocationCache>();
        /// <summary>
        /// æ¿æä»“货位分配
        /// </summary>
@@ -63,25 +63,26 @@
                //未定义类型的空货位 
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenByDescending(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                if (heightType == 1)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer > 7).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer > 7).ToList();
                }
                else if (heightType == 2)
                if (undefinedTypeEmptyLocations == null)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 7).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 7).ToList();
                }
                else if (heightType == 3)
                if (heightType == 2)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 7).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 7).ToList();
                }
                //else
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => false).ToList();
WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs
@@ -63,25 +63,25 @@
                //未定义类型的空货位 
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenByDescending(x => x.Column).ThenBy(x => x.Row).ToList();
                List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
                if (heightType == 1)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                }
                else if (heightType == 2)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                }
                else if (heightType == 3)
                {
                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                }
                //if (heightType == 1)
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
                //}
                //else if (heightType == 2)
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
                //}
                //else if (heightType == 3)
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                //}
                //else
                //{
                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => false).ToList();
WMS/WIDESEA_WMSServer/WIDESEA_Common/HouseStockDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common
{
    public class HouseStockDetail
    {
        public string No { get; set; }
        public List<detailList> DetailList = new List<detailList>();
        public class detailList
        {
            /// <summary>
            /// æ‰˜ç›˜å·
            /// </summary>
            public string LPNNo { get; set; }
            /// <summary>
            /// ç‰©æ–™ç¼–码
            /// </summary>
            public string MaterielCode { get; set; }
            /// <summary>
            /// ç‰©æ–™åç§°
            /// </summary>
            public string MaterielName { get; set; }
            /// <summary>
            /// æ‰¹æ¬¡å·
            /// </summary>
            public string BatchNo { get; set; }
            /// <summary>
            ///
            /// </summary>
            public string LinId { get; set; }
            /// <summary>
            /// ç›˜ç‚¹åŽæ•°é‡
            /// </summary>
            public decimal OrderQuantity { get; set; }
            public List<string> LabelList = new List<string>();
        }
    }
}
WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/WarehouseEnum.cs
@@ -19,5 +19,25 @@
        /// </summary>
        [Description("板料仓")]
        SC02_BC,
        /// <summary>
        /// æˆå“ä»“
        /// </summary>
        [Description("成品仓")]
        SC01_CP,
        /// <summary>
        /// æˆå“ä»“
        /// </summary>
        [Description("成品仓")]
        SC02_CP,
        /// <summary>
        /// ä½Žæ¸©ä»“
        /// </summary>
        [Description("低温仓")]
        SC01_DW,
        /// <summary>
        /// è¯æ°´ä»“
        /// </summary>
        [Description("药水仓")]
        SC01_YS,
    }
}
WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -66,6 +66,8 @@
        WebResponseContent AddOutboundOrders(Houseounbound orderAddDTO);
        WebResponseContent InventoryOut(HouseCancelOut houseInventoryOut);
        WebResponseContent SMOMAdjustment(HouseAdjustment houseAdjustment);
        WebResponseContent SMOMStock(HouseStockDetail houseStockDetail);
        WebResponseContent InventoryIn(string name, int qty);
        /// <summary>
        /// åˆ†é…å··é“
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -443,7 +443,7 @@
                {
                    stockInfo = new Dt_StockInfo()
                    {
                        BatchNo ="",
                        BatchNo = "",
                        PalletCode = palletCode,
                        PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode)
                        IsFull = true,
@@ -1011,7 +1011,7 @@
        public int GetPalletType(Dt_Warehouse warehouse, string palletCode)
        {
            if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ObjToString())
            if (warehouse.WarehouseCode == WarehouseEnum.SC01_DW.ObjToString())
            {
                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 3));
                if (palletTypeInfo == null)
@@ -1020,6 +1020,8 @@
                }
                return palletTypeInfo.PalletType;
            }
            //else if (warehouse.WarehouseCode == WarehouseEnum.HA152.ObjToString())
            //{
            //    Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 2));
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/TakeStockOrderCPService.cs
@@ -63,6 +63,7 @@
                            BatchNo = item.BatchNo,
                            MaterielSpec = item.MaterieSpec,
                            SysQty = item.OrderQuantity,
                            TakePalletCode=item.LPNNo,
                            TakeDetalStatus = TakeStockDetailStatusEnum.未盘点.ObjToInt(),
                        };
                        takeStockOrderCP.Details.Add(takeStockOrderDetail);
@@ -97,6 +98,7 @@
                            BatchNo = item.BatchNo,
                            MaterielSpec = item.MaterieSpec,
                            SysQty = item.OrderQuantity,
                            TakePalletCode = item.LPNNo,
                            Creater = "SMOM",
                            CreateDate = DateTime.Now,
                            TakeDetalStatus = TakeStockDetailStatusEnum.未盘点.ObjToInt(),
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
@@ -50,7 +50,7 @@
                    List<Dt_NewOutboundOrderDetail> detailsForThisLPN = _outboundService.NewOutboundOrderDetailService.Repository.QueryData(x => x.LPNNo == lpn && x.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt());
                    if (detailsForThisLPN.Count == 0) continue;
                    newOutboundOrderDetails.AddRange(detailsForThisLPN);
                    Dt_StockInfo? stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == lpn);
                    Dt_StockInfo? stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == lpn && x.LocationCode != null);
                    if (stockInfo == null)
                    {
                        throw new Exception($"未找到库存信息,托盘号{lpn}");
@@ -226,8 +226,8 @@
                        throw new Exception("未找到库存信息");
                    }
                }
                var Newtasks = GetTasks(stockInfos, TaskTypeEnum.OutInventory);
                string orderNo = takeStockOrderCPs.FirstOrDefault().OrderNo;
                var Newtasks = GetTask(stockInfos, TaskTypeEnum.OutInventory, orderNo);
                List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => stockInfos.Select(x => x.Id).Contains(x.StockId));
                foreach (var item in stockInfos)
                {
@@ -277,12 +277,38 @@
                List<Dt_StockInfoDetail> stockdetail = new List<Dt_StockInfoDetail>();
                foreach (var item in houseAdjustment.DetailList)
                {
                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == item.LPNNo);
                    if (stockInfo == null)
                    {
                        return WebResponseContent.Instance.Error("未找到此托盘库存");
                    }
                    var dt_StockInfo = BaseDal.Db.Queryable<Dt_StockInfoDetail>().LeftJoin<Dt_StockInfo>((stockdetail, stock) => stockdetail.StockId == stock.Id)
                         .Where((stockdetail, stock) => stockdetail.MaterielCode == item.MaterielCode && stockdetail.BatchNo == item.BatchNo && stock.PalletCode == item.LPNNo).Select((stockdetail, stock) => stockdetail).First();
                    if (dt_StockInfo != null)
                    {
                        dt_StockInfo.StockQuantity = item.OrderQuantity;
                        stockdetail.Add(dt_StockInfo);
                    }
                    else
                    {
                        Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                        {
                            StockId = stockInfo.Id,
                            MaterielCode = item.MaterielCode,
                            MaterielName = item.MaterielName,
                            OrderNo = dt_StockInfo.OrderNo,
                            BatchNo = item.BatchNo,
                            SupplierBatch = dt_StockInfo.SupplierBatch,
                            LinId = item.LinId,
                            StockQuantity = item.OrderQuantity,
                            Status = (int)StockStatusEmun.组盘暂存,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                            Id = item.LinId.ObjToInt(),
                            MaterieSpec = dt_StockInfo.MaterieSpec,
                            OrinalLocation = dt_StockInfo.OrinalLocation
                        };
                        stockdetail.Add(stockInfoDetail);
                    }
                }
@@ -297,5 +323,144 @@
            }
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// SMOM发货后成品箱库存调整
        /// </summary>
        /// <param name="houseStockDetail"></param>
        /// <returns></returns>
        public WebResponseContent SMOMStock(HouseStockDetail houseStockDetail)
        {
            WebResponseContent responseContent = new WebResponseContent();
            try
            {
                if (houseStockDetail.DetailList.Count == 0)
                {
                    return WebResponseContent.Instance.Error("无明细信息");
                }
                List<Dt_StockInfoDetail> stockdetail = new List<Dt_StockInfoDetail>();
                var allBoxCodes = new List<string>();
                _unitOfWorkManage.BeginTran();
                foreach (var item in houseStockDetail.DetailList)
                {
                    // æ£€æŸ¥æ˜Žç»†åˆ—表是否存在且有效
                    if (item.LabelList == null || item.LabelList.Count == 0)
                    {
                        return WebResponseContent.Instance.Error($"托盘{item.LPNNo}无箱码明细信息");
                    }
                    allBoxCodes.AddRange(item.LabelList);
                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == item.LPNNo);
                    if (stockInfo == null)
                    {
                        return WebResponseContent.Instance.Error("未找到此托盘库存");
                    }
                    var stockdetailbox = BaseDal.Db.Queryable<Dt_StockInfo>().LeftJoin<Dt_StockInfoDetail>((s, d) => s.Id == d.StockId).LeftJoin<Dt_StockInfoDetailCP>((s, d, cp) => d.Id == cp.StockDetailId).Where((s, d, cp) => allBoxCodes.Contains(cp.BoxCode)).Select((s, d, cp) => cp.BoxCode)
                .Distinct()
                .ToList();
                    var stockInfoDetailCPList = _stockInfoDetailCPRepository.QueryData(x => stockdetailbox.Contains(x.BoxCode)).ToList();
                    if (stockInfoDetailCPList != null)
                    {
                        _stockInfoDetailCPRepository.DeleteAndMoveIntoHty(stockInfoDetailCPList, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    }
                }
                _unitOfWorkManage.CommitTran();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error($"Error: {ex.Message}");
            }
            return WebResponseContent.Instance.OK();
        }
        public List<Dt_Task> GetTask(List<Dt_StockInfo> stockInfos, TaskTypeEnum taskType, string orderNo)
        {
            List<Dt_Task> tasks = new List<Dt_Task>();
            for (int i = 0; i < stockInfos.Count; i++)
            {
                Dt_StockInfo stockInfo = stockInfos[i];
                if (stockInfo != null)
                {
                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
                    if (locationInfo == null)
                    {
                        throw new Exception("未找到出库库位");
                    }
                    Dt_Task dt_Task = BaseDal.QueryFirst(x => x.SourceAddress == locationInfo.LocationCode || x.TargetAddress == locationInfo.LocationCode);
                    if (dt_Task != null)
                    {
                        throw new Exception("该货位已存在起点任务或终点任务");
                    }
                    Dt_Task dt_Task1 = BaseDal.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
                    if (dt_Task1 != null)
                    {
                        throw new Exception("该托盘已存在任务");
                    }
                    Dt_RoadwayInfo roadwayInfo = _basicService.RoadwayInfoService.Repository.QueryFirst(x => x.RoadwayNo == locationInfo.RoadwayNo);
                    Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id);
                    if (roadwayInfo != null)
                    {
                        if (roadwayInfo.RoadwayNo.Contains("CP"))
                        {
                            Dt_Task task = new()
                            {
                                PalletType = stockInfo.PalletType,
                                OrderNo = orderNo,
                                CurrentAddress = locationInfo.LocationCode,
                                Grade = 0,
                                Creater = "WMS",
                                PalletCode = stockInfo.PalletCode,
                                NextAddress = roadwayInfo.OutSCStationCode,
                                Roadway = locationInfo.RoadwayNo,
                                SourceAddress = locationInfo.LocationCode,
                                TargetAddress = "",
                                TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
                                TaskType = taskType.ObjToInt(),
                                Depth = locationInfo.Depth,
                                WarehouseId = stockInfo.WarehouseId,
                                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                                MaterielCode = stockInfoDetail.MaterielCode,
                                Quantity = (float)stockInfoDetail.StockQuantity
                            };
                            tasks.Add(task);
                        }
                        else
                        {
                            Dt_Task task = new()
                            {
                                PalletType = stockInfo.PalletType,
                                OrderNo = stockInfoDetail.OrderNo,
                                CurrentAddress = locationInfo.LocationCode,
                                Grade = 0,
                                Creater = "WMS",
                                PalletCode = stockInfo.PalletCode,
                                NextAddress = roadwayInfo.OutSCStationCode,
                                Roadway = locationInfo.RoadwayNo,
                                SourceAddress = locationInfo.LocationCode,
                                TargetAddress = "",
                                TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
                                TaskType = taskType.ObjToInt(),
                                Depth = locationInfo.Depth,
                                WarehouseId = stockInfo.WarehouseId,
                                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                            };
                            if (taskType != TaskTypeEnum.OutEmpty)
                            {
                                task.MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                                task.Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                            }
                            tasks.Add(task);
                        }
                    }
                }
            }
            return tasks;
        }
    }
}
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -297,181 +297,90 @@
                }
                if (warehouse.WarehouseCode.Contains("CP"))
                {
                    Dt_NewOutboundOrder newOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO.No).Includes(x => x.Details).First();
                    Dt_Production production1 = new Dt_Production();
                    if (newOutboundOrder != null)
                    OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                    orderAddDTO1.OrderNo = orderAddDTO.No;
                    orderAddDTO1.UpperOrderNo = orderAddDTO.No;
                    orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
                    orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode ?? "工单发料";
                    orderAddDTO1.InoutType = orderAddDTO.OrderType ?? InoutTypeEnum.WorkFeed.ToString();
                    orderAddDTO1.OrderType = orderAddDTO.InoutType;
                    orderAddDTO1.System = orderAddDTO.System;
                    IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
                    orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                    #region éªŒè¯æ•°æ®
                    (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
                    if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
                    #endregion
                    Dt_NewOutboundOrder inboundOrder = _mapper.Map<Dt_NewOutboundOrder>(orderAddDTO1);
                    inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                    inboundOrder.Creater = "WMS";
                    inboundOrder.CreateDate = DateTime.Now;
                    inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt();
                    _unitOfWorkManage.BeginTran();
                    bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                    foreach (var item in orderAddDTO1.Details)
                    {
                        if (newOutboundOrder.OutWareHouse != warehouse.WarehouseCode)
                        if (string.IsNullOrWhiteSpace(item.Remark))
                        {
                            return WebResponseContent.Instance.Error($"仓库不一致");
                            continue;
                        }
                        else
                        string[] remarkEntries = item.Remark.Split(
                            new[] { ';' },
                            StringSplitOptions.RemoveEmptyEntries
                        );
                        foreach (var entry in remarkEntries)
                        {
                            OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                            orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                            var details = orderAddDTO1.Details.FirstOrDefault();
                            Dt_NewOutboundOrderDetail outboundOrderDetail = new Dt_NewOutboundOrderDetail()
                            {
                                LPNNo = details.LPNNo,
                                BatchNo = details.BatchNo,
                                MaterielCode = details.MaterielCode,
                                MaterielName = details.MaterielName,
                                MaterieSpec = details.MaterieSpec,
                                OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                                OrderQuantity = details.OrderQuantity,
                                LinId = details.LinId,
                                OrderId = newOutboundOrder.Id,
                                Creater = "WMS",
                                CreateDate = DateTime.Now,
                                Remark = details.Remark,
                                SupplierBatch = details.SupplierBatch,
                                OrinalLocation = details.OrinalLocation,
                            };
                            _newOutboundOrderDetailRepository.AddData(outboundOrderDetail);
                            foreach (var item in orderAddDTO1.Details)
                            {
                                if (string.IsNullOrWhiteSpace(item.Remark))
                                {
                                    continue;
                                }
                                string[] remarkEntries = item.Remark.Split(
                                    new[] { ';' },
                                    StringSplitOptions.RemoveEmptyEntries
                                );
                                foreach (var entry in remarkEntries)
                                {
                                    string[] keyValuePairs = entry.Split(
                                        new[] { ',' },
                                        StringSplitOptions.RemoveEmptyEntries
                                    );
                                    foreach (var kvp in keyValuePairs)
                                    {
                                        int colonIndex = kvp.IndexOf(':');
                                        if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
                                        {
                                            continue;
                                        }
                                        string key = kvp.Substring(0, colonIndex).Trim();
                                        string value = kvp.Substring(colonIndex + 1).Trim();
                                        switch (key)
                                        {
                                            case "制造单号":
                                                production1.ProductionNo = value;
                                                break;
                                            case "制造部件":
                                                production1.ManufacturingCo = value;
                                                break;
                                            case "出库数量":
                                                if (decimal.TryParse(value, out decimal outQuantity))
                                                {
                                                    production1.OutQuantity = outQuantity;
                                                }
                                                else
                                                {
                                                    Console.WriteLine($"出库数量格式错误:{value}(应为数值,如14.0000)");
                                                }
                                                break;
                                            default:
                                                Console.WriteLine($"未知键名:{key}(对应值:{value},跳过该键值对)");
                                                break;
                                        }
                                    }
                                    production1.Creater = "WMS";
                                    production1.OrderId = outboundOrderDetail.Id;
                                    _productionRepository.AddData(production1);
                                }
                            }
                        }
                    }
                    else
                    {
                        OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                        orderAddDTO1.OrderNo = orderAddDTO.No;
                        orderAddDTO1.UpperOrderNo = orderAddDTO.No;
                        orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
                        orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode ?? "工单发料";
                        orderAddDTO1.InoutType = orderAddDTO.OrderType ?? InoutTypeEnum.WorkFeed.ToString();
                        orderAddDTO1.OrderType = orderAddDTO.InoutType;
                        orderAddDTO1.System = orderAddDTO.System;
                        IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
                        orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                        #region éªŒè¯æ•°æ®
                        (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
                        if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
                        #endregion
                        Dt_NewOutboundOrder inboundOrder = _mapper.Map<Dt_NewOutboundOrder>(orderAddDTO1);
                        inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                        inboundOrder.Creater = "WMS";
                        inboundOrder.CreateDate = DateTime.Now;
                        inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt();
                        _unitOfWorkManage.BeginTran();
                        bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                        foreach (var item in orderAddDTO1.Details)
                        {
                            if (string.IsNullOrWhiteSpace(item.Remark))
                            {
                                continue;
                            }
                            string[] remarkEntries = item.Remark.Split(
                                new[] { ';' },
                            string[] keyValuePairs = entry.Split(
                                new[] { ',' },
                                StringSplitOptions.RemoveEmptyEntries
                            );
                            foreach (var entry in remarkEntries)
                            foreach (var kvp in keyValuePairs)
                            {
                                string[] keyValuePairs = entry.Split(
                                    new[] { ',' },
                                    StringSplitOptions.RemoveEmptyEntries
                                );
                                foreach (var kvp in keyValuePairs)
                                int colonIndex = kvp.IndexOf(':');
                                if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
                                {
                                    int colonIndex = kvp.IndexOf(':');
                                    if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
                                    {
                                        continue;
                                    }
                                    string key = kvp.Substring(0, colonIndex).Trim();
                                    string value = kvp.Substring(colonIndex + 1).Trim();
                                    switch (key)
                                    {
                                        case "制造单号":
                                            production1.ProductionNo = value;
                                            break;
                                        case "制造部件":
                                            production1.ManufacturingCo = value;
                                            break;
                                        case "出库数量":
                                            if (decimal.TryParse(value, out decimal outQuantity))
                                            {
                                                production1.OutQuantity = outQuantity;
                                            }
                                            else
                                            {
                                                Console.WriteLine($"出库数量格式错误:{value}(应为数值,如14.0000)");
                                            }
                                            break;
                                        default:
                                            Console.WriteLine($"未知键名:{key}(对应值:{value},跳过该键值对)");
                                            break;
                                    }
                                    continue;
                                }
                                production1.Creater = "WMS";
                                production1.OrderId = inboundOrder.Details.FirstOrDefault().Id;
                                _productionRepository.AddData(production1);
                                string key = kvp.Substring(0, colonIndex).Trim();
                                string value = kvp.Substring(colonIndex + 1).Trim();
                                switch (key)
                                {
                                    case "制造单号":
                                        production1.ProductionNo = value;
                                        break;
                                    case "制造部件":
                                        production1.ManufacturingCo = value;
                                        break;
                                    case "出库数量":
                                        if (decimal.TryParse(value, out decimal outQuantity))
                                        {
                                            production1.OutQuantity = outQuantity;
                                        }
                                        else
                                        {
                                            Console.WriteLine($"出库数量格式错误:{value}(应为数值,如14.0000)");
                                        }
                                        break;
                                    default:
                                        Console.WriteLine($"未知键名:{key}(对应值:{value},跳过该键值对)");
                                        break;
                                }
                            }
                            production1.Creater = "WMS";
                            production1.OrderId = inboundOrder.Details.FirstOrDefault().Id;
                            _productionRepository.AddData(production1);
                        }
                        _unitOfWorkManage.CommitTran();
                    }
                    _unitOfWorkManage.CommitTran();
                }
                else
                {
@@ -1175,10 +1084,6 @@
                    if (item.Details.Count <= 0)
                    {
                        return content.Error($"未找到{item.PalletCode}库存明细数据");
                    }
                    if (item.System.Contains("SMOM"))
                    {
                        return content.Error($"SMOM系统库存数据不可手动盘点,托盘号{item.PalletCode}");
                    }
                    Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
                    if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && item.StockStatus == StockStatusEmun.入库完成.ObjToInt())
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -108,6 +108,7 @@
        private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
        private readonly INewOutboundOrderDetailRepository _newOutboundOrderDetailRepository;
        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
        private readonly IStockInfoDetailCPRepository _stockInfoDetailCPRepository;
        private readonly IReturnOrderRepository _returnOrderRepository;
        private readonly IProductionRepository _productionRepository;
        private readonly IInboundRepository _inboundRepository;
@@ -115,7 +116,7 @@
        private readonly ITakeStockOrderDetailCPRepository _takeStockOrderDetailCPRepository;
        public ITaskRepository Repository => BaseDal;
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoDetailCPRepository stockInfoDetailCPRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _stockRepository = stockRepository;
@@ -143,6 +144,7 @@
            _newOutboundOrderDetailRepository = newOutboundOrderDetailRepository;
            _takeStockOrderCPRepository = takeStockOrderCPRepository;
            _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository;
            _stockInfoDetailCPRepository = stockInfoDetailCPRepository;
        }
        public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
@@ -988,7 +990,7 @@
                                // å•据数量全部上架完成,处理WMS回传
                                if (inboundOrderDetails.Any(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) && inboundOrder.System.Equals("ERP"))
                                {
                                    if(inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt())
                                    if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt())
                                    {
                                        bool allCompleted = inboundOrder.Details.All(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
                                        if (allCompleted)
@@ -1139,7 +1141,7 @@
            int lastStatus, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDetail)
        {
            // æ›´æ–°å…¥åº“单明细状态
               UpdateInboundOrderDetails(stockInfo, inboundOrder, ref inboundOrderDetail);
            UpdateInboundOrderDetails(stockInfo, inboundOrder, ref inboundOrderDetail);
            ///更新库存状态
            stockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
            // æ›´æ–°åº“存明细状态
@@ -1162,21 +1164,21 @@
                AddRecords(task, stockInfo, locationInfo, lastStatus);
                // æ›´æ–°å…¥åº“单
                    UpdateInboundOrder(inboundOrder, inboundOrderDetail);
                UpdateInboundOrder(inboundOrder, inboundOrderDetail);
                    // å•据数量全部上架完成,处理WMS回传
                    if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && inboundOrder.System.Equals("ERP"))
                    {
                            FeedBackInboundERP(inboundOrder.UpperOrderNo, inboundOrderDetail.LinId);
                        }
                    if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
                    {
                        //SendInboundInfoToWMS(task, inboundOrder, stockInfo);
                // å•据数量全部上架完成,处理WMS回传
                if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && inboundOrder.System.Equals("ERP"))
                {
                    FeedBackInboundERP(inboundOrder.UpperOrderNo, inboundOrderDetail.LinId);
                }
                    else if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
                    {
                        SendAllocateInfoToWMS(task, inboundOrder, stockInfo);
                    }
                if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
                {
                    SendInboundInfoToWMS(task, inboundOrder, stockInfo);
                }
                else if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
                {
                    SendAllocateInfoToWMS(task, inboundOrder, stockInfo);
                }
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
@@ -1938,7 +1940,7 @@
                            return WebResponseContent.Instance.Error($"处理失败: {ex.Message}");
                        }
                    }
                    else if(warehouse.WarehouseCode.Contains("DW") || warehouse.WarehouseCode.Contains("YS"))
                    else if (warehouse.WarehouseCode.Contains("DW") || warehouse.WarehouseCode.Contains("YS"))
                    {
                        Dt_OutboundOrder inboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
                        .Where(x => x.OrderNo == task.OrderNo)
@@ -2605,7 +2607,7 @@
            List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
           .Where(x => x.StockId == stockInfo.Id).ToList();
            Dt_ReturnOrder? lastReturnOrder = null;
            Dt_ReturnOrder? lastReturnOrder = null;
            foreach (var stockInfoDetail in stockInfoDetails)
            {
                if (stockInfoDetail == null)
@@ -2654,7 +2656,7 @@
                                System = "WMS",
                                Remark = stockInfoDetail.BatchNo
                            };
                            if(lastReturnOrder != null)
                            if (lastReturnOrder != null)
                            {
                                lastReturnOrder.Remark = lastReturnOrder.Remark + $", {returnOrder.BatchNo}";
                                _returnOrderRepository.UpdateData(lastReturnOrder);
@@ -2664,7 +2666,7 @@
                                returnOrder.LocationCode = stockInfo.LocationCode;
                            }
                            _unitOfWorkManage.BeginTran();
                            if(lastReturnOrder == null)
                            if (lastReturnOrder == null)
                            {
                                _returnOrderRepository.AddData(returnOrder);
                                lastReturnOrder = returnOrder;
@@ -2757,7 +2759,7 @@
                        var matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outboundDetail.MaterielCode && x.BatchNo == outboundDetail.BatchNo);
                        if (matchedStockDetail == null)
                        {
                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x =>x.MaterielCode == outboundDetail.MaterielCode);
                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outboundDetail.MaterielCode);
                            if (matchedStockDetail == null)
                            {
@@ -2795,7 +2797,7 @@
                            returnOrders.Add(returnOrder);
                            // æ›´æ–°å½“前批次明细:只保留出库数量,其余返库
                            matchedStockDetail.StockQuantity = outboundDetail.OrderQuantity;
                            matchedStockDetail.StockQuantity = remainingQuantity;
                            matchedStockDetail.OutboundQuantity = outboundDetail.OrderQuantity;
                            //matchedStockDetail.OrderNo = returnOrder.OrderNo;
                        }
@@ -3506,12 +3508,7 @@
            try
            {
                //获取对应盘点单
                Dt_TakeStockOrderDetailCP takeStockOrderDetailCP = _takeStockOrderDetailCPRepository.QueryFirst(x => x.TakePalletCode == task.PalletCode);
                if (takeStockOrderDetailCP == null)
                {
                    return content.Error($"盘点单,托盘号{takeStockOrderDetailCP.TakePalletCode}不存在");
                }
                Dt_TakeStockOrderCP takeStockOrder = _inboundRepository.TakeStockOrderRepository.Db.Queryable<Dt_TakeStockOrderCP>().Where(x => x.Id == takeStockOrderDetailCP.TakeStockId).Includes(x => x.Details).First();
                Dt_TakeStockOrderCP takeStockOrder = _inboundRepository.TakeStockOrderRepository.Db.Queryable<Dt_TakeStockOrderCP>().Where(x => x.OrderNo == task.OrderNo).Includes(x => x.Details).First();
                if (takeStockOrder == null)
                {
                    return content.Error($"盘点单{task.OrderNo}不存在");
@@ -3574,6 +3571,7 @@
                _returnOrderRepository.AddData(returnOrder);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, LocationStatusEnum.Lock.ObjToInt(), LocationChangeType.OutboundCompleted.ObjToInt(), takeStockOrder?.OrderNo ?? "", task.TaskNum);
                _takeStockOrderCPRepository.UpdateData(takeStockOrder);
                _takeStockOrderDetailCPRepository.UpdateData(takeStockOrder.Details);
                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -254,5 +254,15 @@
        {
            return Service.SMOMAdjustment(houseAdjustment);
        }
        /// <summary>
        /// SMOM发货后成品箱库存调整
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("SMOMStock"), AllowAnonymous]
        public WebResponseContent SMOMStock([FromBody] HouseStockDetail  houseStockDetail)
        {
            return Service.SMOMStock(houseStockDetail);
        }
    }
}
WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -1,45 +1,45 @@
{
  "urls": "http://*:9290", //web服务端口,如果用IIS部署,把这个去掉
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "dics": "inOrderType,inoutType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,InventoryMaterialType,Inventory,materialStatus,warehouses,inoutTypeEnum,takeStockStatusEnum,takeStockDetailStatusEnum",
  "AllowedHosts": "*",
    "urls": "http://*:9290", //web服务端口,如果用IIS部署,把这个去掉
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "dics": "inOrderType,inoutType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,InventoryMaterialType,Inventory,materialStatus,warehouses,inoutTypeEnum,takeStockStatusEnum,takeStockDetailStatusEnum",
    "AllowedHosts": "*",
  "ReceiveTask": "http://192.168.110.172:9291/api/Task/ReceiveTask", //下发出库任务至WCS
  "ReceiveWMSTaskin": "http://172.30.0.190:1031/api/dataportal/invoke", //立库入库数量信息回传WMS
  "ReceiveWMSTaskreturn": "http://172.30.0.190:1031/api/dataportal/invoke", //立库回库数量信息回传WMS
  "ReceiveWMSTaskout": "http://172.30.0.190:1031/api/dataportal/invoke", //立库出库数量信息回传WMS
  "ReceiveWMSTaskAUT": "http://172.30.0.190:1031/api/dataportal/invoke", //立库入库数量信息回传WMS验证
  "ReceiveWMSInventoryIn": "http://172.30.0.190:1031/api/dataportal/invoke", //盘点差异数量回传WMS
  "ReceiveWMSTaskAllocatein": "http://172.30.0.190:1031/api/dataportal/invoke", //调拨任务数量回传WMS
  "ReceiveWMSTask": "http://192.168.110.172:9291/ReceiveWMSTask", //查询库存,确认入库站台
    "ReceiveTask": "http://192.168.110.172:9291/api/Task/ReceiveTask", //下发出库任务至WCS
    "ReceiveWMSTaskin": "http://172.30.0.190:1031/api/dataportal/invoke", //立库入库数量信息回传WMS
    "ReceiveWMSTaskreturn": "http://172.30.0.190:1031/api/dataportal/invoke", //立库回库数量信息回传WMS
    "ReceiveWMSTaskout": "http://172.30.0.190:1031/api/dataportal/invoke", //立库出库数量信息回传WMS
    "ReceiveWMSTaskAUT": "http://172.30.0.190:1031/api/dataportal/invoke", //立库入库数量信息回传WMS验证
    "ReceiveWMSInventoryIn": "http://172.30.0.190:1031/api/dataportal/invoke", //盘点差异数量回传WMS
    "ReceiveWMSTaskAllocatein": "http://172.30.0.190:1031/api/dataportal/invoke", //调拨任务数量回传WMS
    "ReceiveWMSTask": "http://192.168.110.172:9291/ReceiveWMSTask", //查询库存,确认入库站台
  "ReceiveERPTaskout": "http://172.30.0.184:99/external/asrs/api/OutMaterialWarehousingCallback", //立库出库数量信息回传ERP
  "CancelOutFeedbackERP": "http://172.30.0.184:99/external/asrs/api/CancelOutMaterialWarehousing", //出库单明细取消回传ERP
  "InMaterialWarehousingCallback": "http://172.30.0.184:99/external/asrs/api/InMaterialWarehousingCallback", //入库单完成回传ERP
  "CancelInMaterialWarehousing": "http://172.30.0.184:99/external/asrs/api/CancelInMaterialWarehousing", //入库单取消回传ERP
  "ConnectionStringsEncryption": false,
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_JAMK;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=10.168.1.226,1443;Initial Catalog=WIDESEAWMS_JAMK;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称
    "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
    // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
    // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
    "IPs": "http://127.0.0.1:8080,http://localhost:8080"
  },
  "ERP": "http://172.30.0.184:99",
  "WCS": "http://localhost:9291",
  "PrinterName": "SHARP MX-5148NC PCL6",
  "ApiName": "WIDESEA",
  "ExpMinutes": 120,
  "QuartzJobAutoStart": true
    "ReceiveERPTaskout": "http://10.168.3.29:99/external/asrs/api/OutMaterialWarehousingCallback", //立库出库数量信息回传ERP
    "CancelOutFeedbackERP": "http://10.168.3.29:99/external/asrs/api/CancelOutMaterialWarehousing", //出库单明细取消回传ERP
    "InMaterialWarehousingCallback": "http://10.168.3.29:99/external/asrs/api/InMaterialWarehousingCallback", //入库单完成回传ERP
    "CancelInMaterialWarehousing": "http://10.168.3.29:99/external/asrs/api/CancelInMaterialWarehousing", //入库单取消回传ERP
    "ConnectionStringsEncryption": false,
    "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
    //连接字符串
    //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
    //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_JAMK;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    "ConnectionString": "Data Source=10.168.1.226,1443;Initial Catalog=WIDESEAWMS_JAMK;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    //跨域
    "Cors": {
        "PolicyName": "CorsIpAccess", //策略名称
        "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
        // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
        // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
        "IPs": "http://127.0.0.1:8080,http://localhost:8080"
    },
    "ERP": "http://172.30.0.184:99",
    "WCS": "http://localhost:9291",
    "PrinterName": "SHARP MX-5148NC PCL6",
    "ApiName": "WIDESEA",
    "ExpMinutes": 120,
    "QuartzJobAutoStart": true
}
¼ª°²PDA/common/config.js
@@ -1,6 +1,6 @@
let config = {
    baseUrl: 'http://127.0.0.1:9290',
    // baseUrl: 'http://10.168.1.226:9290',
    // baseUrl: 'http://127.0.0.1:9290',
    baseUrl: 'http://10.168.1.226:9290',
    urls: [
        'http://10.30.4.92:9283',
        'http://10.30.4.92:9283'
¼ª°²PDA/pages/stash/CPinboundorder.vue
@@ -5,49 +5,58 @@
                <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
            </view>
        </u-sticky>
        <uni-list :border="true">
            <uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link :to="page+item.orderNo"
                v-for="item in allReceivingOrders" :key="item.orderNo">
                <template v-slot:body>
                    <uni-group margin-top="20">
                        <view
                            style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                            å…¥åº“单号&nbsp;&nbsp;{{item.orderNo}}
                        </view>
                        <view
                            style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                            åˆ›å»ºäººå‘˜&nbsp;&nbsp;{{item.creater}}
                        </view>
                        <view
                            style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                            åˆ›å»ºæ—¥æœŸ&nbsp;&nbsp;{{item.createDate}}
                        </view>
                        <view style="margin-top: 10rpx;display: flex;align-items: center; ">
        <!-- å°†é¡µé¢å†…容包装在 scroll-view ä¸­ -->
        <scroll-view
            scroll-y
            :style="{height: 'calc(100vh - 100px)'}"
            @scrolltolower="onReachBottom"
            ref="scrollView"
        >
            <uni-list :border="true">
                <uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link :to="page+item.orderNo"
                    v-for="item in allReceivingOrders" :key="item.orderNo">
                    <template v-slot:body>
                        <uni-group margin-top="20">
                            <view
                                style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
                                è®¢å•状态&nbsp;&nbsp;{{item.InboundOrderStatus}}
                                style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                                å…¥åº“单号&nbsp;&nbsp;{{item.orderNo}}
                            </view>
                            <view
                                style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                æ€»é‡&nbsp;&nbsp;{{item.SumQty}}
                                style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                                åˆ›å»ºäººå‘˜&nbsp;&nbsp;{{item.creater}}
                            </view>
                            <view
                                style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                å·²ç»„盘&nbsp;&nbsp;{{item.RecQty}}
                                style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                                åˆ›å»ºæ—¥æœŸ&nbsp;&nbsp;{{item.createDate}}
                            </view>
                            <view
                                style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                å·²å…¥&nbsp;&nbsp;{{item.OverQty}}
                            <view style="margin-top: 10rpx;display: flex;align-items: center; ">
                                <view
                                    style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
                                    è®¢å•状态&nbsp;&nbsp;{{item.InboundOrderStatus}}
                                </view>
                                <view
                                    style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                    æ€»é‡&nbsp;&nbsp;{{item.SumQty}}
                                </view>
                                <view
                                    style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                    å·²ç»„盘&nbsp;&nbsp;{{item.RecQty}}
                                </view>
                                <view
                                    style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                                    å·²å…¥&nbsp;&nbsp;{{item.OverQty}}
                                </view>
                            </view>
                        </view>
                    </uni-group>
                </template>
            </uni-list-item>
                        </uni-group>
                    </template>
                </uni-list-item>
        </uni-list>
        <uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
            </uni-list>
            <uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
        <u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
            <u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
        </scroll-view>
    </view>
</template>
@@ -66,7 +75,9 @@
                pageNo: 1,
                scrollTop: 0,
                warehouseId: "",
                isLoaded: false
                isLoaded: false,
                // æ·»åŠ ä¸€ä¸ªå˜é‡è®°å½•æ˜¯å¦æ­£åœ¨åŠ è½½
                isLoadingMore: false
            }
        },
        onLoad(res) {
@@ -74,11 +85,7 @@
            this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
            this.getData();
        },
        onReachBottom() {
            this.pageNo += 1;
            this.getData();
            this.isLoaded = true;
        },
        // ç§»é™¤åŽŸæ¥çš„ onReachBottom,使用 scroll-view çš„ @scrolltolower
        onShow() {
            if (this.isLoaded) {
                // ä»Žå…¶ä»–页面返回时刷新
@@ -95,6 +102,16 @@
            groupClick() {
            },
            // scroll-view æ»šåŠ¨åˆ°åº•éƒ¨æ—¶è§¦å‘
            onReachBottom() {
                if (this.isLoadingMore || this.status === 'noMore') return;
                this.isLoadingMore = true;
                this.pageNo += 1;
                this.status = "loading";
                this.getData();
            },
            getData() {
                var postData = {
                    MainData: {
@@ -106,48 +123,48 @@
                this.$u.post('/api/InboundOrder/GetInboundOrders', postData).then((res) => {
                    if (res.status) {
                        if (res.data.length > 0) {
                            const newData = res.data.map(i => ({
                                ...i,
                                InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                                    .orderStatus).label,
                                SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                                    next) => prev + next, 0),
                                OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                                    next) => prev + next, 0),
                                RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                                    next) => prev + next, 0)
                            }));
                            if (this.searchValue == '') {
                                this.allReceivingOrders = res.data.map(i => ({
                                    ...i,
                                    InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                                        .orderStatus).label,
                                    SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                                        next) => prev + next, 0),
                                    OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                                        next) => prev + next, 0),
                                    RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                                        next) => prev + next, 0)
                                }));
                                // this.allReceivingOrders = res.data;
                                // è¿½åŠ æ•°æ®è€Œä¸æ˜¯æ›¿æ¢
                                this.allReceivingOrders = [...this.allReceivingOrders, ...newData];
                                if (this.allReceivingOrders.length > 3) {
                                    this.loadVisible = true;
                                } else {
                                    this.loadVisible = false;
                                }
                            } else {
                                this.allReceivingOrders = res.data.map(i => ({
                                    ...i,
                                    InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                                        .orderStatus).label,
                                    SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                                        next) => prev + next, 0),
                                    OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                                        next) => prev + next, 0),
                                    RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                                        next) => prev + next, 0)
                                }));
                                // æœç´¢æ—¶æ›¿æ¢æ•°æ®
                                this.allReceivingOrders = newData;
                                if (this.allReceivingOrders.length > 3) {
                                    this.loadVisible = true;
                                } else {
                                    this.loadVisible = false;
                                }
                            }
                            // å¦‚果没有更多数据
                            if (res.data.length < 10) { // å‡è®¾æ¯é¡µ10条数据
                                this.status = 'noMore';
                            } else {
                                this.status = 'more';
                            }
                        } else {
                            this.status = 'noMore';
                            //this.allReceivingOrders = [];
                            this.loadVisible = true;
                        }
                    }
                    this.isLoadingMore = false;
                })
            }
        }
@@ -163,7 +180,12 @@
        box-sizing: border-box;
        background-color: #efeff4;
        min-height: 100%;
        height: auto;
        height: 100vh;
    }
    /* ç¡®ä¿ scroll-view å æ®æ•´ä¸ªé¡µé¢ç©ºé—´ */
    scroll-view {
        height: calc(100vh - 100px);
    }
    .tips {
¼ª°²PDA/pages/stash/FLraworderboxing.vue
@@ -549,7 +549,7 @@
                    }
                }
                
                this.$u.post('/api/InboundOrder/MaterielGroup', {
                this.$u.post('/api/InboundOrder/NewMaterielGroup', {
                    MainData: {
                        "palletCode": this.barcode,
                        "orderNo": this.orderNo,
¼ª°²PDA/pages/stash/Syncretism.vue
@@ -3,11 +3,11 @@
        <view class="itemstyle">
            <uni-forms label-width="180">
                <uni-forms-item label="原始托盘条码:">
                    <uni-easyinput type="text" placeholder="请扫描托盘条码" ref='midInput' :focus="!focus"
                    <uni-easyinput type="text" placeholder="请扫描托盘条码" ref='midInput' :focus="sourceFocus"
                        v-model="soussAddress" @input="barcodeInput" />
                </uni-forms-item>
                <uni-forms-item label="目标托盘条码:">
                    <uni-easyinput type="text" placeholder="请扫描托盘条码" ref='midInput' :focus="!focus"
                    <uni-easyinput type="text" placeholder="请扫描托盘条码" ref='midInput' :focus="targetFocus"
                        v-model="targetAddress" @input="barcodeInput" />
                </uni-forms-item>
                <uni-forms-item>
@@ -20,28 +20,29 @@
</template>
<script>
    const innerAudioContext = uni.createInnerAudioContext();
    export default {
        data() {
            return {
                focus: false,
                sourceFocus: true, // é»˜è®¤åŽŸå§‹æ‰˜ç›˜è¾“å…¥æ¡†èŽ·å¾—ç„¦ç‚¹
                targetFocus: false, // ç›®æ ‡æ‰˜ç›˜è¾“入框不获得焦点
                soussAddress: "",
                targetAddress: "",
                warehouseId: "",
            }
        },
        onShow() {},
        onLoad(res) {
            this.focus = false;
            this.warehouseId = res.warehouseId;
        },
        methods: {
            barcodeInput() {
                this.$nextTick(function(x) {
                    if (this.barcode.length > 0) {
                        this.focus = true;
            barcodeInput(type) {
                if (type != '') {
                    if (this.soussAddress == "") {
                        setTimeout(() => {
                            this.sourceFocus = false;
                            this.targetFocus = true;
                        }, 100);
                    }
                })
                }
            },
            AGVTasks() {
                if (this.soussAddress == "") {
@@ -49,6 +50,8 @@
                        title: "请扫描原始托盘条码",
                        type: 'error'
                    })
                    this.sourceFocus = true;
                    this.targetFocus = false;
                    return;
                }
                if (this.targetAddress == "") {
@@ -56,8 +59,11 @@
                        title: "请扫描目标托盘条码",
                        type: 'error'
                    })
                    this.sourceFocus = false;
                    this.targetFocus = true;
                    return;
                }
                var postDate = {
                    MainData: {
                        soussAddress: this.soussAddress,
@@ -74,11 +80,16 @@
                            })
                            this.soussAddress = "";
                            this.targetAddress = "";
                            this.sourceFocus = true;
                            this.targetFocus = false;
                        } else {
                            this.$refs.uToast.show({
                                title: res.message,
                                type: "error"
                            })
                            this.sourceFocus = true;
                            this.targetFocus = false;
                        }
                    })
            },
¼ª°²PDA/pages/stash/YSraworderboxing.vue
@@ -549,7 +549,7 @@
                    }
                }
                
                this.$u.post('/api/InboundOrder/MaterielGroup', {
                this.$u.post('/api/InboundOrder/NewMaterielGroup', {
                    MainData: {
                        "palletCode": this.barcode,
                        "orderNo": this.orderNo,