已添加19个文件
已重命名1个文件
已修改22个文件
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_CP.cs", |
| | | "ViewState": "AgIAAIYAAAAAAAAAAAAuwJsAAAAZAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-11T00:40:43.019Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-11T00:40:43.019Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u5806\u579B\u673A\\StackerCraneJob_YS.cs", |
| | | "ViewState": "AgIAAH8AAAAAAAAAAAAIwJoAAAAYAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-10T03:13:51.591Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-10T03:13:51.591Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L1.cs", |
| | | "ViewState": "AgIAAE0AAAAAAAAAAAAIwFUAAAAZAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-09T06:45:58.141Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-09T06:45:58.141Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAANAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2026-01-08T10:46:15.09Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-08T10:46:15.09Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", |
| | | "ViewState": "AgIAAIsAAAAAAAAAAAAAwJsAAAB2AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-08T09:45:25.115Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-08T09:45:25.115Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs", |
| | | "ViewState": "AgIAAFcAAAAAAAAAAAAuwGcAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-08T09:43:55.271Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2026-01-08T09:43:55.271Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs", |
| | | "ViewState": "AgIAACgBAAAAAAAAAAAuwDgBAABaAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-07-24T06:51:20.03Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-07-24T06:51:20.03Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "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": "AgIAANkBAAAAAAAAAAA8wPQBAAAIAAAAAAAAAA==", |
| | | "ViewState": "AgIAAPIBAAAAAAAAAAAowAUCAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-07-23T05:44:58.595Z", |
| | | "EditorCaption": "" |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u677F\u6750\u4ED3\\ConveyorLineJob_BC.cs", |
| | | "ViewState": "AgIAALsAAAAAAAAAAAAIwMwAAABCAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-07-23T04:01:37.222Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-07-23T04:01:37.222Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | "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:{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}" |
| | | }, |
| | |
| | | "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\\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_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 13, |
| | | "SelectedChildIndex": 17, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "DocumentIndex": 8, |
| | | "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", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "DocumentIndex": 2, |
| | | "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", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\RGV\\RGVJob_L2.cs", |
| | | "ViewState": "AgIAAE0AAAAAAAAAAAAYwFUAAAAYAAAAAAAAAA==", |
| | | "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": 1, |
| | | "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", |
| | |
| | | "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": 6, |
| | | "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", |
| | |
| | | }, |
| | | { |
| | | "$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", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", |
| | | "ViewState": "AgIAAIsAAAAAAAAAAAAAwJsAAAB2AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2026-01-08T09:45:25.115Z" |
| | | "WhenOpened": "2026-01-08T09:45:25.115Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "DocumentIndex": 5, |
| | | "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", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "DocumentIndex": 7, |
| | | "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", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "DocumentIndex": 4, |
| | | "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", |
| | |
| | | }, |
| | | { |
| | | "$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": "" |
| | | } |
| | | ] |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | onInit() { |
| | | this.columns.push({ |
| | | field: 'æä½', |
| | | title: 'æä½', |
| | | width: 90, |
| | | fixed: 'right', |
| | | align: 'center', |
| | | formatter: (row) => { |
| | | return ( |
| | | '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">ç´æ¥åºåº</i>' |
| | | ); |
| | | }, |
| | | click: (row) => { |
| | | this.$confirm("æ¯å¦ç¡®è®¤åºåº","åºåºæä½ç¡®è®¤",{ |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | center: true, |
| | | }).then(() => { |
| | | let rows = this.$refs.table.getSelected(); |
| | | if (rows.length == 0) return this.$error("è¯·éæ©æ°æ®!"); |
| | | if (rows.length > 1) return this.$error("è¯·éæ©ä¸æ¡æ°æ®!"); |
| | | const keys = rows.map(row => row.id); |
| | | // åéPOST请æ±ï¼å°IDæ°ç»ä½ä¸ºè¯·æ±ä½åé |
| | | this.http |
| | | .post("api/Task/SMOMGenerateSTOutboundTask", keys, "æ°æ®å¤çä¸...") |
| | | .then((x) => { |
| | | if (x.status) { |
| | | this.$Message.success('æä½æå'); |
| | | this.refresh(); |
| | | } else { |
| | | return this.$error(x.message); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | |
| | | align: 'center', |
| | | formatter: (row) => { |
| | | return ( |
| | | '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">ç´æ¥åºåº</i>' |
| | | '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">åæåºåº</i>' |
| | | ); |
| | | }, |
| | | click: (row) => { |
| | |
| | | path: '/takeStockOrder', |
| | | name: 'takeStockOrder', |
| | | component: () => import('@/views/inbound/takeStockOrder.vue') |
| | | }, { |
| | | path: '/takeStockOrderCP', |
| | | name: 'takeStockOrderCP', |
| | | component: () => import('@/views/inbound/takeStockOrderCP.vue') |
| | | }] |
| | | |
| | | export default viewgird |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <!-- <div> |
| | | <assemble-dist></assemble-dist> |
| | | </div> --> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/inbound/takeStockOrderCP.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | // import AssembleDistVue from '../charts/AssembleDist.vue'; |
| | | export default defineComponent({ |
| | | // components: { |
| | | // 'assemble-dist': AssembleDistVue, |
| | | // }, |
| | | setup() { |
| | | //使ç¨ç»ä»¶AssembleDist |
| | | const table = ref({ |
| | | key: "id", |
| | | footer: "Foots", |
| | | cnName: "çç¹å", |
| | | name: "takeStockOrderCP", |
| | | url: "/TakeStockOrderCP/", |
| | | sortName: "id", |
| | | }); |
| | | |
| | | const searchFormFields = ref({ |
| | | orderNo:"" |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "åæ®ç¼å·", field: "orderNo", type: "like" }, |
| | | ] |
| | | ]); |
| | | |
| | | const editFormFields = ref({ |
| | | orderNo:"", |
| | | warehouseId: "", |
| | | remark:"" |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | field: "orderNo", |
| | | title: "åæ®ç¼å·", |
| | | type: "string", |
| | | readonly: "true", |
| | | }, |
| | | { |
| | | title: "ä»åº", |
| | | field: "warehouseId", |
| | | type: "select", |
| | | dataKey: "warehouses", |
| | | data: [], |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | } |
| | | ] |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "orderNo", |
| | | title: "çç¹åå·", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | link: true, |
| | | }, |
| | | { |
| | | field: "takeStockStatus", |
| | | title: "çç¹ç¶æ", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "takeStockStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "warehouseId", |
| | | title: "ä»åº", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | bind:{key: "warehouses", data: []} |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "çç¹æç»", |
| | | table: "Dt_TakeStockOrderDetail", |
| | | columns: [ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "takeStockId", |
| | | title: "çç¹å主é®", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "takePalletCode", |
| | | title: "çç¹æç", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "takeDetalStatus", |
| | | title: "çç¹æç»ç¶æ", |
| | | type: "int", |
| | | width: 130, |
| | | align: "left", |
| | | bind: { key: "takeStockDetailStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "materielCode", |
| | | title: "ç©æç¼ç ", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "materielName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "batchNo", |
| | | title: "æ¹æ¬¡å·", |
| | | type: "string", |
| | | width: 130, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "materielSpec", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "sysQty", |
| | | title: "è´¦é¢æ°é", |
| | | type: "decimal", |
| | | width: 90, |
| | | align: "left", |
| | | required: true, |
| | | edit: { type: "decimal" } |
| | | }, |
| | | { |
| | | field: "qty", |
| | | title: "å®çæ°é", |
| | | type: "decimal", |
| | | width: 90, |
| | | align: "left", |
| | | required: true, |
| | | edit: { type: "decimal" } |
| | | }, |
| | | { |
| | | field: "unit", |
| | | title: "åä½", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ], |
| | | sortName: "id", |
| | | key: "id", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | }, |
| | | { title: "åºåå建æ¶é´", field: "createDate", type: "datetime" }, |
| | | ], |
| | | [ |
| | | { |
| | | title:"䏿¸¸ç³»ç»", |
| | | field:"system", |
| | | type:"select", |
| | | data: [ |
| | | { key: "SMOM", value: "SMOM" }, |
| | | { key: "ERP", value: "ERP" }, |
| | | ] |
| | | } |
| | | ] |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "system", |
| | | title: "䏿¸¸ç³»ç»", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | // hidden: true, |
| | | }, |
| | | { |
| | | field: "stockStatus", |
| | | title: "åºåç¶æ", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "DocumentIndex": 18, |
| | | "Title": "PartialTaskService_Inbound.cs", |
| | | "DocumentMoniker": "D:\\\u9879\u76EE\\1.16\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs", |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_Common |
| | | { |
| | | public class HouseAdjustment |
| | | { |
| | | 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; } |
| | | } |
| | | } |
| | | } |
| | |
| | | async () => await SuccessAction(invocation, apiLogAopInfo, startTime), /*æåæ¶æ§è¡*/ |
| | | ex => |
| | | { |
| | | LogEx(ex, apiLogAopInfo); |
| | | //LogEx(ex, apiLogAopInfo); |
| | | }); |
| | | } |
| | | //Task<TResult> |
| | |
| | | async (o) => await SuccessAction(invocation, apiLogAopInfo, startTime, o), /*æåæ¶æ§è¡*/ |
| | | ex => |
| | | { |
| | | LogEx(ex, apiLogAopInfo); |
| | | //LogEx(ex, apiLogAopInfo); |
| | | }); |
| | | } |
| | | |
| | |
| | | apiLogAopInfo.ResponseJsonData = jsonResult; |
| | | Parallel.For(0, 1, e => |
| | | { |
| | | LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) }); |
| | | //LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) }); |
| | | }); |
| | | } |
| | | } |
| | | catch (Exception ex) // 忥2 |
| | | { |
| | | LogEx(ex, apiLogAopInfo); |
| | | //LogEx(ex, apiLogAopInfo); |
| | | throw; |
| | | } |
| | | } |
| | |
| | | [Description("忣åºåºå")] |
| | | 忣åºåºå = 6, |
| | | |
| | | /// <summary> |
| | | /// çç¹ååºå |
| | | /// </summary> |
| | | [Description("çç¹ååºå")] |
| | | çç¹ååºå = 7, |
| | | |
| | | } |
| | | /// <summary> |
| | | /// åæ®å¤§ç±» |
| | |
| | | public string BatchNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 䏿¸¸ç³»ç» |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "䏿¸¸ç³»ç»")] |
| | | public string System { get; set; } |
| | | |
| | | /// <summary> |
| | | ///ä¾åºåæ¹å· |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "ä¾åºåæ¹æ¬¡")] |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundRepository |
| | | { |
| | | /// <summary> |
| | | /// çç¹åä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface ITakeStockOrderCPRepository : IRepository<Dt_TakeStockOrderCP> |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundRepository |
| | | { |
| | | /// <summary> |
| | | /// çç¹åæç»ä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface ITakeStockOrderDetailCPRepository : IRepository<Dt_TakeStockOrderDetailCP> |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundService |
| | | { |
| | | public interface ITakeStockOrderCPService : IService<Dt_TakeStockOrderCP> |
| | | { |
| | | ITakeStockOrderCPRepository Repository { get; } |
| | | |
| | | //smomçç¹ä»»å¡ |
| | | WebResponseContent NewInventoryOut(HouseCancelOut houseInventoryOut); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundService |
| | | { |
| | | public interface ITakeStockOrderDetailCPService : IService<Dt_TakeStockOrderDetailCP> |
| | | { |
| | | ITakeStockOrderDetailCPRepository Repository { get; } |
| | | } |
| | | } |
| | |
| | | WebResponseContent OutboundTaskCompleted(int taskNum); |
| | | WebResponseContent AddOutboundOrders(Houseounbound orderAddDTO); |
| | | WebResponseContent InventoryOut(HouseCancelOut houseInventoryOut); |
| | | WebResponseContent SMOMAdjustment(HouseAdjustment houseAdjustment); |
| | | WebResponseContent InventoryIn(string name, int qty); |
| | | /// <summary> |
| | | /// åé
å··é |
| | |
| | | WebResponseContent WMSGenerateNewOutboundTask(int[] keys); |
| | | |
| | | WebResponseContent WMSGenerateSTOutboundTask(int[] keys); |
| | | |
| | | WebResponseContent SMOMGenerateSTOutboundTask(int[] keys); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundRepository |
| | | { |
| | | /// <summary> |
| | | /// çç¹åä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class TakeStockOrderCPRepository : RepositoryBase<Dt_TakeStockOrderCP>, ITakeStockOrderCPRepository |
| | | { |
| | | public TakeStockOrderCPRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundRepository |
| | | { |
| | | /// <summary> |
| | | /// çç¹åä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class TakeStockOrderDetailCPRepository : RepositoryBase<Dt_TakeStockOrderDetailCP>, ITakeStockOrderDetailCPRepository |
| | | { |
| | | public TakeStockOrderDetailCPRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | Wlstatus = (int)InventoryMaterialStatus.åæ ¼, |
| | | Mgeneratetime = DateTime.Now, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | System = inboundOrder.System, |
| | | Details = new List<Dt_StockInfoDetail>() |
| | | }; |
| | | } |
| | |
| | | Wlstatus = (int)InventoryMaterialStatus.åæ ¼, |
| | | Mgeneratetime = DateTime.Now, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | System = inboundOrder.System, |
| | | Details = new List<Dt_StockInfoDetail>() |
| | | }; |
| | | } |
| | |
| | | Wlstatus = (int)InventoryMaterialStatus.åæ ¼, |
| | | Mgeneratetime = DateTime.Now, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | System = inboundOrder.System, |
| | | Details = new List<Dt_StockInfoDetail>() |
| | | }; |
| | | } |
| | |
| | | { |
| | | throw new Exception("åºåæªæ¾å°æçå·"); |
| | | } |
| | | |
| | | var sameItems = from sourceItem in stockInfo.Details |
| | | join targetItem in targetstockInfo.Details |
| | | on new |
| | | { |
| | | sourceItem.BatchNo, |
| | | sourceItem.MaterielName, |
| | | sourceItem.MaterielCode |
| | | } |
| | | equals new |
| | | { |
| | | targetItem.BatchNo, |
| | | targetItem.MaterielName, |
| | | targetItem.MaterielCode |
| | | } |
| | | select new |
| | | { |
| | | SourceItem = sourceItem, |
| | | TargetItem = targetItem, |
| | | BatchNo = sourceItem.BatchNo, |
| | | MaterialCode = sourceItem.MaterielCode, |
| | | MaterialType = sourceItem.MaterielName |
| | | }; |
| | | |
| | | var matchedSourceItemIds = sameItems.Select(x => x.SourceItem.Id).ToList(); |
| | | |
| | | foreach (var item in stockInfo.Details) |
| | | { |
| | | item.StockId = targetstockInfo.Id; |
| | | if (!matchedSourceItemIds.Contains(item.Id)) |
| | | { |
| | | item.StockId = targetstockInfo.Id; |
| | | } |
| | | } |
| | | var differentItems = stockInfo.Details |
| | | .Where(x => !matchedSourceItemIds.Contains(x.Id)) |
| | | .ToList(); |
| | | targetstockInfo.Details = targetstockInfo.Details |
| | | .Where(x => !matchedSourceItemIds.Contains(x.Id)) |
| | | .Concat(differentItems) |
| | | .ToList(); |
| | | if (warehouse.WarehouseCode == "SC02_CP") |
| | | { |
| | | warehouse.WarehouseCode = "SC01_CP"; |
| | |
| | | }).ToList() |
| | | } |
| | | } |
| | | // Parameters = stockInfo.Details.Select(g => new HouseSyncretism.data |
| | | // { |
| | | // Lpn = stockInfo.PalletCode, |
| | | // MoveType = 0, |
| | | // WareHouseCode = warehouse.WarehouseCode, |
| | | // ItemCode = g.MaterielCode, |
| | | // MoveNumber = g.StockQuantity, |
| | | // //LotNo = g., |
| | | // WipBatch = g.BatchNo, |
| | | // LocationName = stockInfo.PalletCode, |
| | | // TargetLocName = targetstockInfo.PalletCode, |
| | | // TargetLpn = targetstockInfo.PalletCode, |
| | | |
| | | // }).ToList() |
| | | //}; |
| | | }; |
| | | var authResult = AuthenticateWithWMS(); |
| | | if (authResult.IsSuccess) |
| | |
| | | |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | targetstockInfo.Details.AddRange(stockInfo.Details); |
| | | foreach (var sameItem in sameItems) |
| | | { |
| | | sameItem.TargetItem.StockQuantity += sameItem.SourceItem.StockQuantity; |
| | | _stockRepository.StockInfoDetailRepository.UpdateData(sameItem.TargetItem); |
| | | _stockRepository.StockInfoDetailRepository.DeleteData(sameItem.SourceItem); |
| | | } |
| | | _stockRepository.StockInfoRepository.UpdateData(targetstockInfo); |
| | | _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details); |
| | | _stockRepository.StockInfoRepository.DeleteData(stockInfo); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | webResponseContent = WebResponseContent.Instance.OK("åææå"); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Core.Helper; |
| | | using Microsoft.AspNetCore.Mvc.RazorPages; |
| | | using WIDESEA_InboundRepository; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_Core.Enums; |
| | | using SqlSugar; |
| | | using System.Collections; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_DTO.Outbound; |
| | | using WIDESEA_Core.TaskEnum; |
| | | |
| | | namespace WIDESEA_InboundService |
| | | { |
| | | public class TakeStockOrderCPService : ServiceBase<Dt_TakeStockOrderCP, ITakeStockOrderCPRepository>, ITakeStockOrderCPService |
| | | { |
| | | public ITakeStockOrderCPRepository Repository => BaseDal; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly ITakeStockOrderDetailCPRepository _takeStockOrderDetailCPRepository; |
| | | private readonly IStockInfoRepository _stockInfoRepository; |
| | | private readonly IStockInfoDetailRepository _stockInfoDetailRepository; |
| | | public TakeStockOrderCPService(ITakeStockOrderCPRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoRepository stockInfoRepository, IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _basicRepository = basicRepository; |
| | | _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository; |
| | | _stockInfoRepository = stockInfoRepository; |
| | | _stockInfoDetailRepository = stockInfoDetailRepository; |
| | | } |
| | | |
| | | //smomä¸åçç¹ä»»å¡ |
| | | public WebResponseContent NewInventoryOut(HouseCancelOut houseInventoryOut) |
| | | { |
| | | WebResponseContent content = new(); |
| | | try |
| | | { |
| | | Dt_TakeStockOrderCP takeStockOrderCP = BaseDal.QueryFirst(x => x.OrderNo == houseInventoryOut.No); |
| | | if (takeStockOrderCP != null) |
| | | { |
| | | OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO(); |
| | | orderAddDTO1.Details = houseInventoryOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>(); |
| | | foreach (var item in orderAddDTO1.Details) |
| | | { |
| | | Dt_TakeStockOrderDetailCP takeStockOrderDetail = new Dt_TakeStockOrderDetailCP() |
| | | { |
| | | TakeStockId = takeStockOrderCP.Id, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | | BatchNo = item.BatchNo, |
| | | MaterielSpec = item.MaterieSpec, |
| | | SysQty = item.OrderQuantity, |
| | | TakeDetalStatus = TakeStockDetailStatusEnum.æªçç¹.ObjToInt(), |
| | | }; |
| | | takeStockOrderCP.Details.Add(takeStockOrderDetail); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO(); |
| | | orderAddDTO1.Details = houseInventoryOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>(); |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == orderAddDTO1.Details.FirstOrDefault().WarehouseCode); |
| | | takeStockOrderCP = new Dt_TakeStockOrderCP() |
| | | { |
| | | OrderNo = houseInventoryOut.No, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | TakeStockStatus = TakeStockDetailStatusEnum.æªçç¹.ObjToInt(), |
| | | Details = new List<Dt_TakeStockOrderDetailCP>() |
| | | }; |
| | | |
| | | foreach (var item in orderAddDTO1.Details) |
| | | { |
| | | Dt_TakeStockOrderDetailCP takeStockOrderDetail = new Dt_TakeStockOrderDetailCP() |
| | | { |
| | | TakeStockId = takeStockOrderCP.Id, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | | BatchNo = item.BatchNo, |
| | | MaterielSpec = item.MaterieSpec, |
| | | SysQty = item.OrderQuantity, |
| | | TakeDetalStatus = TakeStockDetailStatusEnum.æªçç¹.ObjToInt(), |
| | | }; |
| | | takeStockOrderCP.Details.Add(takeStockOrderDetail); |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(takeStockOrderCP).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_InboundService.Base |
| | | { |
| | | internal class TakeStockOrderDetailCPService |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.DB.Models; |
| | | using WIDESEA_Core.Enums; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// çç¹å |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_TakeStockOrderCP), "æåçç¹å")] |
| | | public class Dt_TakeStockOrderCP : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹åå· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "çç¹åå·")] |
| | | public string OrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ä»åºä¸»é®")] |
| | | public int WarehouseId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "çç¹ç¶æ")] |
| | | public int TakeStockStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹æç» |
| | | /// </summary> |
| | | [PropertyValidate("çç¹æç»", NotNullAndEmpty = true), Navigate(NavigateType.OneToMany, nameof(Dt_TakeStockOrderDetailCP.TakeStockId), nameof(Id))] |
| | | public List<Dt_TakeStockOrderDetailCP> Details { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// çç¹åæç» |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_TakeStockOrderDetailCP), "æåçç¹åæç»")] |
| | | public class Dt_TakeStockOrderDetailCP : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹åä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "çç¹å主é®")] |
| | | public int TakeStockId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼ç |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æç¼ç ")] |
| | | public string MaterielCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "ç©æåç§°")] |
| | | public string MaterielName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¹æ¬¡å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ¹æ¬¡å·")] |
| | | public string BatchNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æè§æ ¼ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "ç©æè§æ ¼")] |
| | | public string MaterielSpec { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åä»ä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "åä»ä½")] |
| | | public string LocationCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹æç |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "çç¹æç")] |
| | | public string TakePalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çç¹æç»ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "çç¹æç»ç¶æ")] |
| | | public int TakeDetalStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "åä½")] |
| | | public string Unit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´¦é¢æ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "è´¦é¢æ°é")] |
| | | public decimal SysQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®çæ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å®çæ°é")] |
| | | public decimal Qty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | } |
| | | } |
| | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "䏿¸¸ç³»ç»")] |
| | | public string System { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç产æ¶é´")] |
| | | public DateTime Mgeneratetime { get; set; } |
| | | |
| | |
| | | [SugarTable(nameof(VV_StockInfoDet), "åºåå±ç¤ºä¿¡æ¯")] |
| | | public class VV_StockInfoDet |
| | | { |
| | | [ExporterHeader(DisplayName = "æçç¼å·",IsIgnore =true)] |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æçç¼å·")] |
| | | [ExporterHeader(DisplayName = "æçç¼å·", IsIgnore = true)] |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æçç¼å·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | [ExporterHeader(DisplayName = "ç±»å")] |
| | |
| | | [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "åºåå·")] |
| | | public string SerialNumber { get; set; } |
| | | |
| | | |
| | | [ExporterHeader(DisplayName = "䏿¸¸ç³»ç»", IsIgnore = true)] |
| | | [SugarColumn(IsNullable = false, Length = 255, ColumnDescription = "䏿¸¸ç³»ç»")] |
| | | public string System { get; set; } |
| | | |
| | | |
| | | [ExporterHeader(DisplayName = "åºåæ°é")] |
| | | [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "åºåæ°é")] |
| | | public decimal StockQuantity { get; set; } |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | |
| | | List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); |
| | | if (searchParametersList?.Any() == true) |
| | | { |
| | |
| | | if (!string.IsNullOrEmpty(param.Value?.ToString())) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1 |
| | | .Where(x=>x.PalletCode.Contains(param.Value.ToString())); |
| | | .Where(x => x.PalletCode.Contains(param.Value.ToString())); |
| | | } |
| | | break; |
| | | case var name when name == nameof(Dt_StockInfo.System).FirstLetterToLower(): |
| | | if (!string.IsNullOrEmpty(param.Value?.ToString())) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1 |
| | | .Where(x => x.System.Contains(param.Value.ToString())); |
| | | } |
| | | break; |
| | | case var name when name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower(): |
| | |
| | | { |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | ISugarQueryable<StockViewDTO> list = sugarQueryable1 |
| | | .InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode) |
| | |
| | | PalletCode = b.PalletCode, |
| | | StockRemark = b.Remark, |
| | | RoadwayNo = a.RoadwayNo, |
| | | System = b.System, |
| | | Row = a.Row, |
| | | StockId = b.Id, |
| | | StockStatus = b.StockStatus, |
| | |
| | | { |
| | | x.MaterielCode = string.Join(",", x.Details.Select(d => d.MaterielCode).Distinct()); |
| | | x.BatchNo = string.Join(",", x.Details.Select(d => d.BatchNo).Distinct()); |
| | | x.SupplierBatch= string.Join(",", x.Details.Select(d => d.SupplierBatch).Distinct()); |
| | | x.SupplierBatch = string.Join(",", x.Details.Select(d => d.SupplierBatch).Distinct()); |
| | | x.StockCounts = Math.Round(x.Details.Sum(x => x.StockQuantity), 3).ToString(); |
| | | x.MaterielSpec = x.Details.FirstOrDefault()?.MaterieSpec ?? ""; |
| | | x.MaterielName = x.Details.FirstOrDefault()?.MaterielName ?? ""; |
| | |
| | | BatchNo = g.Key.BatchNo, |
| | | BatchNoName = g.Key.BatchNoName, |
| | | StockQuantity = g.Sum(x => x.StockQuantity), |
| | | CreateDate = g.Min(x => x.CreateDate) // è·åæ¯ç»çææ© CreateDate |
| | | CreateDate = g.Min(x => x.CreateDate) // è·åæ¯ç»çææ© CreateDate10 |
| | | }) |
| | | .ToList(); |
| | | |
| | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using MailKit.Search; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | |
| | | { |
| | | public partial class TaskService |
| | | { |
| | | /// <summary> |
| | | /// æååºåº |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent WMSGenerateNewOutboundTask(int[] keys) |
| | | { |
| | | try |
| | |
| | | } |
| | | } |
| | | |
| | | //åæåºåº |
| | | /// <summary> |
| | | /// åæåºåº |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent WMSGenerateSTOutboundTask(int[] keys) |
| | | { |
| | | try |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SMOMçç¹åºåº |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent SMOMGenerateSTOutboundTask(int[] keys) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); |
| | | List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); |
| | | |
| | | List<Dt_TakeStockOrderCP> takeStockOrderCPs = _takeStockOrderCPRepository.QueryData(x => keys.Contains(x.Id)); |
| | | if (takeStockOrderCPs == null || takeStockOrderCPs.Count == 0) |
| | | { |
| | | throw new Exception("æªæ¾å°åºåä¿¡æ¯,æåºåç¶æä¸ä¸ºå
¥åºå®æ"); |
| | | } |
| | | if (takeStockOrderCPs.FirstOrDefault(x => x.TakeStockStatus > TakeStockDetailStatusEnum.æªçç¹.ObjToInt()) != null) |
| | | { |
| | | throw new Exception("æéåºåºåæç»åå¨åºåºä¸æå·²å®æ"); |
| | | } |
| | | List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); |
| | | foreach (var takeStock in takeStockOrderCPs) |
| | | { |
| | | List<Dt_TakeStockOrderDetailCP> takeStockOrderDetailCPs = _takeStockOrderDetailCPRepository.QueryData(x => x.TakeStockId == takeStock.Id); |
| | | |
| | | var lpngroup = takeStockOrderDetailCPs.GroupBy(x => x.TakePalletCode); |
| | | foreach (var lpngroups in lpngroup) |
| | | { |
| | | string lpn = lpngroups.Key; |
| | | Dt_StockInfo? stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == lpn); |
| | | if (stockInfo == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°åºåä¿¡æ¯ï¼æçå·{lpn}"); |
| | | } |
| | | stockInfos.Add(stockInfo); |
| | | } |
| | | if (stockInfos == null || stockInfos.Count == 0) |
| | | { |
| | | throw new Exception("æªæ¾å°åºåä¿¡æ¯"); |
| | | } |
| | | } |
| | | |
| | | var Newtasks = GetTasks(stockInfos, TaskTypeEnum.OutInventory); |
| | | List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => stockInfos.Select(x => x.Id).Contains(x.StockId)); |
| | | foreach (var item in stockInfos) |
| | | { |
| | | Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.PalletCode == item.PalletCode); |
| | | if (stockInfo == null) continue; |
| | | |
| | | stockInfo.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | var task = Newtasks.FirstOrDefault(x => x.PalletCode == item.PalletCode); |
| | | tasks.Add(task); |
| | | } |
| | | locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(stockInfos.Select(x => x.LocationCode).ToList())); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | BaseDal.AddData(tasks); |
| | | _stockService.StockInfoService.Repository.UpdateData(stockInfos); |
| | | _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetails); |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock.ObjToInt(), StockChangeType.Outbound.ObjToInt(), "", tasks?.Select(x => x.TaskNum).ToList()); |
| | | _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | //å°ä»»å¡æ¨éå°WCS |
| | | return PushTasksWCS(tasks); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SMOMçç¹ååºåè°æ´ |
| | | /// </summary> |
| | | /// <param name="houseAdjustment"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent SMOMAdjustment(HouseAdjustment houseAdjustment) |
| | | { |
| | | WebResponseContent responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | foreach (var item in houseAdjustment.DetailList) |
| | | { |
| | | Dt_StockInfoDetail dt_StockInfo = BaseDal.Db.Queryable<Dt_StockInfoDetail>().LeftJoin<Dt_StockInfo>((stockdetail, stock) => stockdetail.StockId == stock.Id) |
| | | .Where((stockdetail, stock) => stockdetail.MaterielCode == item.MaterielCode && stockdetail.MaterielName == item.MaterielName && stockdetail.LinId == item.LinId && stockdetail.BatchNo == item.BatchNo && stock.PalletCode == item.LPNNo).Select((stockdetail, stock) => stockdetail).First(); |
| | | if (dt_StockInfo == null) |
| | | { |
| | | return WebResponseContent.Instance.Error("æªæ¾å°æ¤åºåæ°æ®"); |
| | | } |
| | | dt_StockInfo.StockQuantity = item.OrderQuantity; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoDetailRepository.UpdateData(dt_StockInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error($"Error: {ex.Message}"); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (stockInfo != null) |
| | | { |
| | | Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode); |
| | | if (locationInfo==null) |
| | | if (locationInfo == null) |
| | | { |
| | | throw new Exception("æªæ¾å°åºåºåºä½"); |
| | | } |
| | |
| | | } |
| | | tasks.Add(task); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | (int)OrderTypeEnum.忣åºåºå => TaskTypeEnum.ReverseOut, |
| | | _ => new TaskTypeEnum() |
| | | }; |
| | | tasks = GetTasks(result.Item1,typeEnum); |
| | | tasks = GetTasks(result.Item1, typeEnum); |
| | | tasks.ForEach(x => |
| | | { |
| | | x.OrderNo = outboundOrder.OrderNo; |
| | |
| | | CreateDate = DateTime.Now, |
| | | Remark = details.Remark, |
| | | SupplierBatch = details.SupplierBatch, |
| | | OrinalLocation=details.OrinalLocation, |
| | | OrinalLocation = details.OrinalLocation, |
| | | }; |
| | | _newOutboundOrderDetailRepository.AddData(outboundOrderDetail); |
| | | foreach (var item in orderAddDTO1.Details) |
| | |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | //å°ä»»å¡æ¨éå°WCS |
| | | |
| | | |
| | | if (tasks.FirstOrDefault().Roadway.Contains("SC01_BC")) |
| | | { |
| | | PushTasksToWCS(tasks); |
| | |
| | | { |
| | | 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()) |
| | | { |
| | |
| | | private readonly IReturnOrderRepository _returnOrderRepository; |
| | | private readonly IProductionRepository _productionRepository; |
| | | private readonly IInboundRepository _inboundRepository; |
| | | |
| | | private readonly ITakeStockOrderCPRepository _takeStockOrderCPRepository; |
| | | 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) : 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) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _stockRepository = stockRepository; |
| | |
| | | _productionRepository = productionRepository; |
| | | _inboundRepository = inboundRepository; |
| | | _newOutboundOrderDetailRepository = newOutboundOrderDetailRepository; |
| | | _takeStockOrderCPRepository = takeStockOrderCPRepository; |
| | | _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository; |
| | | } |
| | | |
| | | public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"]; |
| | |
| | | int lastStatus = locationInfo.LocationStatus; |
| | | |
| | | ///çç¹åºåºä»»å¡å®æé»è¾ |
| | | if (task.TaskType == TaskTypeEnum.OutInventory.ObjToInt()) |
| | | if (task.TaskType == TaskTypeEnum.OutInventory.ObjToInt() && stockInfo.System == "SMOM") |
| | | { |
| | | return SMOMOutInventoryCompleted(task, stockInfo, locationInfo); |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.OutInventory.ObjToInt()) |
| | | { |
| | | return OutInventoryCompleted(task, stockInfo, locationInfo); |
| | | } |
| | |
| | | // è·åæå°æºåç§° |
| | | string printerName = AppSettings.app("PrinterName"); |
| | | |
| | | // å°è¯ä¸åçæå°æ¹æ³ |
| | | for (int retryCount = 0; retryCount < maxRetryCount; retryCount++) |
| | | { |
| | | try |
| | | { |
| | | Console.WriteLine($"å°è¯æå° (æ¹æ³ {retryCount + 1}/{maxRetryCount}): {fullPath}"); |
| | | PrintUsingSpireSimple(fullPath, printerName); |
| | | |
| | | switch (retryCount) |
| | | { |
| | | case 0: |
| | | // æ¹æ³1: 使ç¨åå§æå°å½ä»¤ |
| | | PrintUsingRawCommand(fullPath, printerName); |
| | | break; |
| | | case 1: |
| | | // æ¹æ³3: ç´æ¥ä½¿ç¨Spire.PDFä½ç®å设置 |
| | | PrintUsingSpireSimple(fullPath, printerName); |
| | | break; |
| | | case 2: |
| | | // æ¹æ³3: ç´æ¥ä½¿ç¨Spire.PDFä½ç®å设置 |
| | | PrintUsingSpireSimple(fullPath, printerName); |
| | | break; |
| | | } |
| | | |
| | | Console.WriteLine("æå°ä»»å¡åéæå"); |
| | | return; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"æå°æ¹æ³ {retryCount + 1} 失败: {ex.Message}"); |
| | | |
| | | if (retryCount < maxRetryCount - 1) |
| | | { |
| | | Thread.Sleep(retryDelayMs); |
| | | } |
| | | } |
| | | } |
| | | |
| | | Console.WriteLine("æææå°æ¹æ³é½å¤±è´¥"); |
| | | } |
| | | |
| | | |
| | | private void PrintUsingSpireSimple(string filePath, string printerName) |
| | | { |
| | | try |
| | | { |
| | | using (Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument()) |
| | | { |
| | | // å è½½æä»¶ |
| | | pdf.LoadFromFile(filePath); |
| | | |
| | | // è·åå®é
çæå°æºåç§° |
| | | string actualPrinterName = GetActualPrinterName(printerName); |
| | | |
| | | Console.WriteLine($"é
ç½®çæå°æºåç§°: {printerName}"); |
| | | Console.WriteLine($"å®é
使ç¨çæå°æºåç§°: {actualPrinterName}"); |
| | | |
| | | // 妿æ¾ä¸å°å®é
æå°æºï¼ä½¿ç¨é»è®¤æå°æº |
| | | if (!string.IsNullOrEmpty(actualPrinterName) && IsPrinterInstalled(actualPrinterName)) |
| | | { |
| | | pdf.PrintSettings.PrinterName = actualPrinterName; |
| | | Console.WriteLine($"â 已设置æå°æº: {actualPrinterName}"); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine($"â ï¸ æå°æº '{actualPrinterName}' æªæ¾å°ï¼ä½¿ç¨é»è®¤æå°æº"); |
| | | } |
| | | |
| | | // ç´æ¥æå° |
| | | pdf.Print(); |
| | | Console.WriteLine("â æå°ä»»å¡å·²æäº¤æå"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"â Spire.PDFæå°å¤±è´¥: {ex.Message}"); |
| | | |
| | | // è¾åºææå¯ç¨æå°æºï¼å¸®å©è°è¯ |
| | | Console.WriteLine("\nç³»ç»ææå¯ç¨æå°æº:"); |
| | | foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters) |
| | | { |
| | | Console.WriteLine($" - {printer}"); |
| | | } |
| | | |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»é
ç½®çå好åç§°è·åå®é
çæå°æºåç§° |
| | | /// </summary> |
| | | private string GetActualPrinterName(string displayName) |
| | | { |
| | | if (string.IsNullOrEmpty(displayName)) |
| | | return string.Empty; |
| | | |
| | | // 妿é
ç½®çæ¯ "192.168.99.3 ä¸ç Lenovo M7605D" |
| | | if (displayName.Contains("192.168.99.3 ä¸ç Lenovo M7605D")) |
| | | { |
| | | // å¨ç³»ç»ä¸æ¥æ¾å®é
çæå°æºåç§° |
| | | return FindActualPrinterForIP("192.168.99.3"); |
| | | } |
| | | |
| | | // å¦æç´æ¥é
ç½®çæ¯IPå°å |
| | | if (displayName.Contains("192.168.99.3")) |
| | | { |
| | | return FindActualPrinterForIP("192.168.99.3"); |
| | | } |
| | | |
| | | // å¦æå·²ç»æ¯å®é
çæå°æºåç§°ï¼ç´æ¥è¿å |
| | | if (IsPrinterInstalled(displayName)) |
| | | { |
| | | return displayName; |
| | | } |
| | | |
| | | // é»è®¤è¿åååç§° |
| | | return displayName; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¾IPå°å对åºçå®é
æå°æºåç§° |
| | | /// </summary> |
| | | private string FindActualPrinterForIP(string ipAddress) |
| | | { |
| | | try |
| | | { |
| | | // è·åæææå°æº |
| | | var allPrinters = new List<string>(); |
| | | foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters) |
| | | { |
| | | allPrinters.Add(printer); |
| | | } |
| | | |
| | | Console.WriteLine($"æ¥æ¾IPå°å {ipAddress} 对åºçæå°æº..."); |
| | | Console.WriteLine("ç³»ç»æå°æºå表:"); |
| | | foreach (var printer in allPrinters) |
| | | { |
| | | Console.WriteLine($" - {printer}"); |
| | | } |
| | | |
| | | // ä¼å
æ¥æ¾å
å«IPå°åçæå°æº |
| | | foreach (string printer in allPrinters) |
| | | { |
| | | if (printer.Contains(ipAddress)) |
| | | { |
| | | Console.WriteLine($"â æ¾å°å
å«IPçæå°æº: {printer}"); |
| | | return printer; |
| | | } |
| | | } |
| | | |
| | | // æ¥æ¾èæ³æå°æº |
| | | foreach (string printer in allPrinters) |
| | | { |
| | | if (printer.Contains("M7605D", StringComparison.OrdinalIgnoreCase) |
| | | { |
| | | Console.WriteLine($"â æ¾å°èæ³æå°æº: {printer}"); |
| | | return printer; |
| | | } |
| | | } |
| | | |
| | | |
| | | // è¿å第ä¸ä¸ªå¯ç¨çæå°æº |
| | | if (allPrinters.Any()) |
| | | { |
| | | Console.WriteLine($"â ï¸ æªæ¾å°ç²¾ç¡®å¹é
ï¼ä½¿ç¨ç¬¬ä¸ä¸ªæå°æº: {allPrinters.First()}"); |
| | | return allPrinters.First(); |
| | | } |
| | | |
| | | return string.Empty; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"æ¥æ¾æå°æºå¤±è´¥: {ex.Message}"); |
| | | return string.Empty; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ£æ¥æå°æºæ¯å¦å·²å®è£
|
| | | /// </summary> |
| | | private bool IsPrinterInstalled(string printerName) |
| | | { |
| | | try |
| | | { |
| | | foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters) |
| | | { |
| | | if (printer.Equals(printerName, StringComparison.OrdinalIgnoreCase)) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | catch |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 使ç¨åå§æå°å½ä»¤ |
| | | /// </summary> |
| | |
| | | { |
| | | try |
| | | { |
| | | // æ¹æ³1: 使ç¨Processç´æ¥æå° |
| | | var process = new System.Diagnostics.Process(); |
| | | process.StartInfo.FileName = filePath; |
| | | process.StartInfo.Verb = "print"; |
| | | process.StartInfo.CreateNoWindow = true; |
| | | process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; |
| | | process.Start(); |
| | | var processStartInfo = new System.Diagnostics.ProcessStartInfo |
| | | { |
| | | FileName = filePath, |
| | | Verb = "print", // 使ç¨"print"å¨è¯ |
| | | UseShellExecute = true, // å
³é®ï¼å¯ç¨Shellæ§è¡ |
| | | CreateNoWindow = true, |
| | | WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden |
| | | }; |
| | | |
| | | // çå¾
䏿®µæ¶é´è®©æå°ä»»å¡æäº¤ |
| | | if (!process.WaitForExit(5000)) |
| | | { |
| | | Console.WriteLine("æå°è¿ç¨æªåæ¶éåºï¼ä½ä»»å¡å¯è½å·²æäº¤"); |
| | | } |
| | | // 设置æå°æºï¼å¯éï¼ç³»ç»é常ä¼ä½¿ç¨é»è®¤æå°æºï¼ |
| | | // processStartInfo.Arguments = $"/t \"{filePath}\" \"{printerName}\""; |
| | | |
| | | System.Diagnostics.Process.Start(processStartInfo); |
| | | } |
| | | catch |
| | | catch (Exception ex) |
| | | { |
| | | // 妿ä¸è¿°æ¹æ³å¤±è´¥ï¼å°è¯ä½¿ç¨rundll32 |
| | | try |
| | | { |
| | | var args = $@"/c rundll32.exe C:\Windows\System32\shimgvw.dll,ImageView_PrintTo ""{filePath}"" ""{printerName}"""; |
| | | System.Diagnostics.Process.Start("cmd.exe", args); |
| | | } |
| | | catch |
| | | { |
| | | throw; |
| | | } |
| | | Console.WriteLine($"æå°å¤±è´¥: {ex.Message}"); |
| | | // å¯ä»¥å°è¯å
¶ä»æ¹æ³ |
| | | //TryAlternativePrintMethod(filePath, printerName); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 使ç¨Spire.PDFä½ç®å设置 |
| | | /// </summary> |
| | | private void PrintUsingSpireSimple(string filePath, string printerName) |
| | | { |
| | | using (Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument()) |
| | | { |
| | | // ä½¿ç¨æå°é
ç½®å è½½æä»¶ |
| | | pdf.LoadFromFile(filePath); |
| | | |
| | | // è®¾ç½®åºæ¬æå°æºä¿¡æ¯ |
| | | if (!string.IsNullOrEmpty(printerName)) |
| | | { |
| | | pdf.PrintSettings.PrinterName = printerName; |
| | | } |
| | | |
| | | // ç´æ¥æå°ï¼ä¸æ£æ¥ |
| | | pdf.Print(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ£æ¥æä»¶æ¯å¦å¯è®¿é® |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SMOMçç¹å宿 |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <param name="stockInfo"></param> |
| | | /// <param name="locationInfo"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent SMOMOutInventoryCompleted(Dt_Task task, Dt_StockInfo stockInfo, Dt_LocationInfo locationInfo) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //è·å对åºçç¹å |
| | | 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}ä¸åå¨"); |
| | | } |
| | | if (takeStockOrder.TakeStockStatus != TakeStockStatusEnum.çç¹ä¸.ObjToInt()) |
| | | { |
| | | return content.Error($"çç¹å{task.OrderNo}çç¹å·²å®æææªå¼å§"); |
| | | } |
| | | if (stockInfo.StockStatus != StockStatusEmun.åºåºéå®.ObjToInt()) |
| | | { |
| | | return content.Error($"{stockInfo.PalletCode}åºåç¶æä¸æ£ç¡®"); |
| | | } |
| | | if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt()) |
| | | { |
| | | return content.Error($"{locationInfo.LocationCode}è´§ä½ç¶æä¸æ£ç¡®"); |
| | | } |
| | | //æ ¹æ®ä»»å¡æçæ¥çç¹æç» |
| | | Dt_TakeStockOrderDetailCP? takeStockOrderDetail = takeStockOrder.Details.FirstOrDefault(x => x.TakePalletCode == stockInfo.PalletCode); |
| | | if (takeStockOrderDetail == null) |
| | | { |
| | | return content.Error($"{stockInfo.PalletCode}æªæ¾å°å¯¹åºçç¹æç»"); |
| | | } |
| | | if (takeStockOrderDetail.TakeDetalStatus != TakeStockDetailStatusEnum.çç¹åºåºä¸.ObjToInt()) |
| | | { |
| | | return content.Error($"{stockInfo.PalletCode}çç¹æç»ç¶æä¸æ£ç¡®"); |
| | | } |
| | | takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.çç¹åºåºå®æ.ObjToInt(); |
| | | stockInfo.StockStatus = StockStatusEmun.çç¹åºåºå®æ.ObjToInt(); |
| | | stockInfo.Details.ForEach(x => |
| | | { |
| | | x.Status = StockStatusEmun.çç¹åºåºå®æ.ObjToInt(); |
| | | }); |
| | | stockInfo.LocationCode = ""; |
| | | task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); |
| | | int beforeStatus = locationInfo.LocationStatus; |
| | | locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); |
| | | Dt_ReturnOrder returnOrder = new Dt_ReturnOrder |
| | | { |
| | | MaterielCode = stockInfo.Details.FirstOrDefault()?.MaterielCode, |
| | | MaterielName = stockInfo.Details.FirstOrDefault()?.MaterielName, |
| | | BatchNo = stockInfo.Details.FirstOrDefault()?.BatchNo, |
| | | OrderQuantity = stockInfo.Details.Sum(x => x.StockQuantity), |
| | | ReceiptQuantity = stockInfo.Details.Sum(x => x.StockQuantity), |
| | | OrderStatus = InOrderStatusEnum.æªå¼å§.ObjToInt(), |
| | | LinId = stockInfo.Details.FirstOrDefault()?.LinId, |
| | | LocationCode = stockInfo.LocationCode, |
| | | LPNNo = stockInfo.PalletCode, |
| | | Creater = "LK", |
| | | CreateDate = DateTime.Now, |
| | | OrderType = OrderTypeEnum.çç¹ååºå.ObjToInt(), |
| | | System = "WMS" |
| | | }; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | //è´§ä½åå¨è®°å½ |
| | | _basicService.LocationInfoService.UpdateData(locationInfo); |
| | | _returnOrderRepository.AddData(returnOrder); |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, LocationStatusEnum.Lock.ObjToInt(), LocationChangeType.OutboundCompleted.ObjToInt(), takeStockOrder?.OrderNo ?? "", task.TaskNum); |
| | | _takeStockOrderDetailCPRepository.UpdateData(takeStockOrderDetail); |
| | | _stockRepository.StockInfoRepository.UpdateData(stockInfo); |
| | | _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | #endregion |
| | | #endregion |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Inbound |
| | | { |
| | | /// <summary> |
| | | /// çç¹å |
| | | /// </summary> |
| | | [Route("api/TakeStockOrderCP")] |
| | | [ApiController] |
| | | public class TakeStockOrderCPController : ApiBaseController<ITakeStockOrderCPService, Dt_TakeStockOrderCP> |
| | | { |
| | | public TakeStockOrderCPController(ITakeStockOrderCPService service) : base(service) |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// è·å对åºä»åºçç¹å |
| | | /// </summary> |
| | | [HttpPost, HttpGet, Route("NewInventoryOut"), AllowAnonymous] |
| | | public WebResponseContent NewInventoryOut([FromBody] HouseCancelOut houseInventoryOut) |
| | | { |
| | | return Service.NewInventoryOut(houseInventoryOut); |
| | | } |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Inbound |
| | | { |
| | | /// <summary> |
| | | /// çç¹æç»å |
| | | /// </summary> |
| | | [Route("api/TakeStockOrderDetailCP")] |
| | | [ApiController] |
| | | public class TakeStockOrderDetailCPController : ApiBaseController<ITakeStockOrderDetailCPService, Dt_TakeStockOrderDetailCP> |
| | | { |
| | | public TakeStockOrderDetailCPController(ITakeStockOrderDetailCPService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | return Service.WMSGenerateSTOutboundTask(keys); |
| | | } |
| | | /// <summary> |
| | | /// SMOMçç¹ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("SMOMGenerateSTOutboundTask"), AllowAnonymous] |
| | | public WebResponseContent SMOMGenerateSTOutboundTask([FromBody] int[] keys) |
| | | { |
| | | return Service.SMOMGenerateSTOutboundTask(keys); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCSç³è¯·å
¥åºä»»å¡ |
| | |
| | | return Service.OutboundTaskCompleted(taskNum); |
| | | } |
| | | /// <summary> |
| | | /// WMSä¸ååºåºåæ® |
| | | /// </summary> |
| | | /// <param name="orderAddDTO"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("AddOutboundOrders"), AllowAnonymous] |
| | | public WebResponseContent AddOutboundOrders([FromBody] Houseounbound orderAddDTO) |
| | | { |
| | | return Service.AddOutboundOrders(orderAddDTO); |
| | | } |
| | | /// <summary> |
| | | /// çç¹ä»»å¡ä¸ä¼ |
| | | /// </summary> |
| | | /// <param name="houseInventoryOut"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("InventoryOut"), AllowAnonymous] |
| | | public WebResponseContent InventoryOut([FromBody] HouseCancelOut houseInventoryOut) |
| | | { |
| | | return Service.InventoryOut(houseInventoryOut); |
| | | } |
| | | /// <summary> |
| | | /// çç¹ä»»å¡åä¼ WMS |
| | | /// </summary> |
| | | /// <param name="name"></param> |
| | |
| | | { |
| | | return Service.TakeOutbound(stockViews); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SMOMä¸ååºåºåæ® |
| | | /// </summary> |
| | | /// <param name="orderAddDTO"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("AddOutboundOrders"), AllowAnonymous] |
| | | public WebResponseContent AddOutboundOrders([FromBody] Houseounbound orderAddDTO) |
| | | { |
| | | return Service.AddOutboundOrders(orderAddDTO); |
| | | } |
| | | /// <summary> |
| | | /// SMOMçç¹ä»»å¡ä¸ä¼ |
| | | /// </summary> |
| | | /// <param name="houseInventoryOut"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("InventoryOut"), AllowAnonymous] |
| | | public WebResponseContent InventoryOut([FromBody] HouseCancelOut houseInventoryOut) |
| | | { |
| | | return Service.InventoryOut(houseInventoryOut); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SMOMçç¹ååºåè°æ´ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("SMOMAdjustment"), AllowAnonymous] |
| | | public WebResponseContent SMOMAdjustment([FromBody] HouseAdjustment houseAdjustment) |
| | | { |
| | | return Service.SMOMAdjustment(houseAdjustment); |
| | | } |
| | | } |
| | | } |
| | |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="åå§æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" v-model="soussAddress" |
| | | @input="barcodeInput" /> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" |
| | | v-model="soussAddress" @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç®æ æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" v-model="targetAddress" |
| | | @input="barcodeInput" /> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" |
| | | v-model="targetAddress" @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="AGVTasks" type="primary" size="default" style="margin-top: 2%;">ç¡®è®¤å®æ</button> |
| | |
| | | focus: false, |
| | | soussAddress: "", |
| | | targetAddress: "", |
| | | warehouseId: "", |
| | | warehouseId: "", |
| | | } |
| | | }, |
| | | onShow() {}, |
| | | onLoad(res) { |
| | | this.focus = false; |
| | | this.warehouseId=res.warehouseId; |
| | | this.warehouseId = res.warehouseId; |
| | | }, |
| | | methods: { |
| | | barcodeInput() { |
| | |
| | | MainData: { |
| | | soussAddress: this.soussAddress, |
| | | targetAddress: this.targetAddress, |
| | | warehouseId:this.warehouseId, |
| | | warehouseId: this.warehouseId, |
| | | } |
| | | } |
| | | this.$u.post('/api/InboundOrder/SYMaterielGroup', postDate).then( |
| | | res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "ä»»å¡å建æåæå", |
| | | title: "åææå", |
| | | type: "success" |
| | | }) |
| | | this.barcode = ""; |
| | | this.soussAddress = ""; |
| | | this.targetAddress = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |