From a205d879fb21a8b60348bf465a970c07b0784945 Mon Sep 17 00:00:00 2001 From: duyongjia <adu_555@163.com> Date: 星期二, 25 二月 2025 10:05:36 +0800 Subject: [PATCH] 最新修改 --- 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json | 264 ++++- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTTaskCommand.cs | 81 + 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs | 88 ++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/Class1.cs | 12 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IWMSPart/ILocationInfoService.cs | 3 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs | 135 +++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs | 51 + 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/UtilConvert.cs | 977 ++++++++++++++++++++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/HtmlElementType.cs | 32 /dev/null | 62 - 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMSPart/LocationInfoController.cs | 7 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs | 49 + 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj | 4 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Enums/LinqExpressionType.cs | 21 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs | 206 ++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs | 135 +++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs | 230 +++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationEnum.cs | 87 ++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj | 4 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 32 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs | 83 + 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/HierarchyCache.v1.txt | 0 24 files changed, 2,417 insertions(+), 150 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" index 579ed71..4255da6 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" @@ -3,28 +3,68 @@ "WorkspaceRootPath": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\gzj\\gzjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\gzj\\gzjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohtjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\oht\\ohtjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\zxj\\zxjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\zxj\\zxjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohtreaddata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\oht\\ohtreaddata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\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|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohttaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\oht\\ohttaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\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:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_wmspart\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|solutionrelative:wideseawcs_wmspart\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_dto\\basicinfo\\initializationlocationdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\basicinfo\\initializationlocationdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{ADD3F3A3-CDFF-4854-B8C9-058FBDA2CFD4}|WIDESEAWCS_IWMSPart\\WIDESEAWCS_IWMSPart.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_iwmspart\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{ADD3F3A3-CDFF-4854-B8C9-058FBDA2CFD4}|WIDESEAWCS_IWMSPart\\WIDESEAWCS_IWMSPart.csproj|solutionrelative:wideseawcs_iwmspart\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_dto\\stackercarnetaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\stackercarnetaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\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:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\wideseawcs_server.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\wideseawcs_server.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\project\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -34,8 +74,34 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 5, + "SelectedChildIndex": 0, "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "GZJJob.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", + "ViewState": "AQIAAB0AAAAAAAAAAAAxwB0AAAAnAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T01:19:59.147Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "WIDESEAWCS_Tasks", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj*", + "RelativeToolTip": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj*", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-25T01:16:32.256Z", + "EditorCaption": "" + }, { "$type": "Bookmark", "Name": "ST:129:0:{1fc202d4-d401-403c-9834-5b218574bb67}" @@ -50,33 +116,150 @@ }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 2, + "Title": "OHTJob.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", + "ViewState": "AQIAACUAAAAAAAAAAAAYwBwAAAAgAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T01:09:35.247Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ZXJJob.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs", + "ViewState": "AQIAACwAAAAAAAAAAAAAADEAAAAlAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T00:51:27.292Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "TaskService.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", + "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", + "ViewState": "AQIAAO0AAAAAAAAAAIA6wMgBAABXAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-24T08:02:07.139Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "OHTReadData.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTReadData.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTReadData.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTReadData.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTReadData.cs", + "ViewState": "AQIAADgAAAAAAAAAAAArwD8AAAAUAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-24T07:55:22.813Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "OHTTaskCommand.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTTaskCommand.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTTaskCommand.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTTaskCommand.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTTaskCommand.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-24T07:53:49.316Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "InitializationLocationDTO.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\BasicInfo\\InitializationLocationDTO.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\BasicInfo\\InitializationLocationDTO.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\BasicInfo\\InitializationLocationDTO.cs", + "RelativeToolTip": "WIDESEAWCS_DTO\\BasicInfo\\InitializationLocationDTO.cs", + "ViewState": "AQIAAAMAAAAAAAAAAAAAAA0AAAAPAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T06:24:21.85Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, "Title": "Sys_DictionaryController.cs", "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs", "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs", "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs", - "ViewState": "AQIAACQAAAAAAAAAAAAmwCsAAAAMAAAA", + "ViewState": "AQIAACMAAAAAAAAAAIA5wC0AAAAPAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-02-18T08:02:00.02Z", + "WhenOpened": "2025-02-20T03:51:34.737Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 13, + "Title": "StackerCarneTaskDTO.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\StackerCarneTaskDTO.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\StackerCarneTaskDTO.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\StackerCarneTaskDTO.cs", + "RelativeToolTip": "WIDESEAWCS_DTO\\StackerCarneTaskDTO.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T03:07:50.105Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ILocationInfoService.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_IWMSPart\\ILocationInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_IWMSPart\\ILocationInfoService.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_IWMSPart\\ILocationInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_IWMSPart\\ILocationInfoService.cs", + "ViewState": "AQIAAA4AAAAAAAAAAAAhwBgAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T03:03:47.551Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "LocationInfoService.cs", + "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\LocationInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_WMSPart\\LocationInfoService.cs", + "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\LocationInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_WMSPart\\LocationInfoService.cs", + "ViewState": "AQIAACoAAAAAAAAAAAAqwDYAAAA0AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T02:53:02.073Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, "Title": "appsettings.json", "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", - "ViewState": "AQIAAAcAAAAAAAAAAAAIwBUAAACUAAAA", + "ViewState": "AQIAAB4AAAAAAAAAAAAYwCgAAAATAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", "WhenOpened": "2025-02-18T07:29:50.467Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 14, "Title": "Sys_UserService.cs", "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs", "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", @@ -84,12 +267,11 @@ "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", "ViewState": "AQIAACgAAAAAAAAAAAAAwC8AAAAQAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-02-18T07:20:48.526Z", - "EditorCaption": "" + "WhenOpened": "2025-02-18T07:20:48.526Z" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 15, "Title": "Sys_UserController.cs", "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", @@ -97,46 +279,20 @@ "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", "ViewState": "AQIAADwAAAAAAAAAAAAewEYAAAAIAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-02-18T07:12:12.812Z", - "EditorCaption": "" + "WhenOpened": "2025-02-18T07:12:12.812Z" }, { "$type": "Document", - "DocumentIndex": 4, - "Title": "WIDESEAWCS_Server", - "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj", - "RelativeDocumentMoniker": "WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj", - "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj", - "RelativeToolTip": "WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj", - "ViewState": "AQIAABgAAAAAAAAAAAAAAB8AAAACAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-02-18T07:04:34.852Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 1, "Title": "Program.cs", "DocumentMoniker": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Program.cs", "ToolTip": "D:\\project\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs", - "ViewState": "AQIAAIcAAAAAAAAAAAAlwJEAAAAAAAAA", + "ViewState": "AQIAAIcAAAAAAAAAAAAnwJQAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-02-18T06:50:46.477Z", "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "CustomProfile.cs", - "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u682A\u6D32\u4F18\u745E\u79D1\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\CustomProfile.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\CustomProfile.cs", - "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u682A\u6D32\u4F18\u745E\u79D1\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\CustomProfile.cs", - "RelativeToolTip": "WIDESEAWCS_Server\\Filter\\CustomProfile.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxUAAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-02-18T06:25:21.8Z" } ] } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/HierarchyCache.v1.txt" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/HierarchyCache.v1.txt" index 50c81c5..a26aa2e 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/HierarchyCache.v1.txt" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/HierarchyCache.v1.txt" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/HtmlElementType.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/HtmlElementType.cs" new file mode 100644 index 0000000..7c9fa17 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/HtmlElementType.cs" @@ -0,0 +1,32 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Common.Const +{ + public struct HtmlElementType + { + public const string drop = "drop"; + public const string droplist = "droplist"; + public const string select = "select"; + public const string selectlist = "selectlist"; + public const string checkbox = "checkbox"; + public const string textarea = "textarea"; + public const string thanorequal = "thanorequal"; + public const string lessorequal = "lessorequal"; + + + public const string gt = "gt"; + public const string lt = "lt"; + public const string GT = ">"; + public const string LT = "<"; + public const string like = "like"; + + public const string ThanOrEqual = ">="; + public const string LessOrequal = "<="; + public const string Contains = "in"; + public const string Equal = "="; + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Enums/LinqExpressionType.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Enums/LinqExpressionType.cs" new file mode 100644 index 0000000..1d52a76 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Enums/LinqExpressionType.cs" @@ -0,0 +1,21 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Common.Enums +{ + public enum LinqExpressionType + { + Equal = 0,//= + NotEqual = 1,//!= + GreaterThan,//> + LessThan,//< + ThanOrEqual,//>= + LessThanOrEqual,//<= + In, + Contains,//Contains + NotContains//NotContains + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/Class1.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/Class1.cs" new file mode 100644 index 0000000..bb6034c --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/Class1.cs" @@ -0,0 +1,12 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Common.Helper +{ + internal class Class1 + { + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/UtilConvert.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/UtilConvert.cs" new file mode 100644 index 0000000..55abbab --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Helper/UtilConvert.cs" @@ -0,0 +1,977 @@ +锘縰sing Newtonsoft.Json; +using System.Data; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Web; +using WIDESEAWCS_Common.Const; +using WIDESEAWCS_Common.Enums; + +namespace WIDESEAWCS_Common.Helper +{ + public static class UtilConvert + { + private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0); + + private static long longTime = 621355968000000000; + + private static int samllTime = 10000000; + /// <summary> + /// 鏃堕棿鎴宠浆鎹㈡垚鏃ユ湡 + /// </summary> + /// <param name="timeStamp"></param> + /// <returns></returns> + public static DateTime GetTimeSpmpToDate(this object timeStamp) + { + if (timeStamp == null) return dateStart; + DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime(); + return dateTime; + } + + public static string Serialize(this object obj, JsonSerializerSettings formatDate = null) + { + if (obj == null) return null; + formatDate = formatDate ?? new JsonSerializerSettings + { + DateFormatString = "yyyy-MM-dd HH:mm:ss" + }; + return JsonConvert.SerializeObject(obj, formatDate); + } + + public static T DeserializeObject<T>(this string json) + { + if (string.IsNullOrEmpty(json)) + { + return default(T); + } + if (json == "{}") + { + json = "[]"; + } + return JsonConvert.DeserializeObject<T>(json); + } + + public static string FirstLetterToLower(this string thisValue) + { + if (string.IsNullOrEmpty(thisValue)) return string.Empty; + string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1); + return result; + } + + public static string FirstLetterToUpper(this string thisValue) + { + if (string.IsNullOrEmpty(thisValue)) return string.Empty; + string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1); + return result; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static int ObjToInt(this object thisValue) + { + int reval = 0; + if (thisValue == null) return 0; + if (thisValue is Enum && thisValue != DBNull.Value && Enum.TryParse(thisValue.GetType(), thisValue.ToString(), out var val)) + { + return Convert.ToInt32(val.ChangeType(typeof(int))); + } + if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return reval; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static int DoubleToInt(this double thisValue) + { + int reval = 0; + + return Convert.ToInt32(thisValue); + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <param name="errorValue"></param> + /// <returns></returns> + public static int ObjToInt(this object thisValue, int errorValue) + { + int reval = 0; + if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return errorValue; + } + + public static long ObjToLong(this object thisValue) + { + long reval = 0; + if (thisValue == null) return 0; + if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return reval; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static double ObjToMoney(this object thisValue) + { + double reval = 0; + if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return 0; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <param name="errorValue"></param> + /// <returns></returns> + public static double ObjToMoney(this object thisValue, double errorValue) + { + double reval = 0; + if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return errorValue; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static string ObjToString(this object thisValue) + { + if (thisValue != null) return thisValue.ToString().Trim(); + return ""; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static bool IsNotEmptyOrNull(this object thisValue) + { + return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null"; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <param name="errorValue"></param> + /// <returns></returns> + public static string ObjToString(this object thisValue, string errorValue) + { + if (thisValue != null) return thisValue.ToString().Trim(); + return errorValue; + } + + public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString()); + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static Decimal ObjToDecimal(this object thisValue) + { + Decimal reval = 0; + if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return 0; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <param name="errorValue"></param> + /// <returns></returns> + public static Decimal ObjToDecimal(this object thisValue, decimal errorValue) + { + Decimal reval = 0; + if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return errorValue; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static DateTime ObjToDate(this object thisValue) + { + DateTime reval = DateTime.MinValue; + if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval)) + { + reval = Convert.ToDateTime(thisValue); + } + + return reval; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <param name="errorValue"></param> + /// <returns></returns> + public static DateTime ObjToDate(this object thisValue, DateTime errorValue) + { + DateTime reval = DateTime.MinValue; + if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return errorValue; + } + + /// <summary> + /// + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static bool ObjToBool(this object thisValue) + { + bool reval = false; + if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval)) + { + return reval; + } + + return reval; + } + + + /// <summary> + /// 鑾峰彇褰撳墠鏃堕棿鐨勬椂闂存埑 + /// </summary> + /// <param name="thisValue"></param> + /// <returns></returns> + public static string DateToTimeStamp(this DateTime thisValue) + { + TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0); + return Convert.ToInt64(ts.TotalSeconds).ToString(); + } + + public static object ChangeType(this object value, Type type) + { + if (value == null && type.IsGenericType) return Activator.CreateInstance(type); + if (value == null) return null; + if (type == value.GetType()) return value; + if (type.IsEnum) + { + if (value is string) + return Enum.Parse(type, value as string); + else + return Enum.ToObject(type, value); + } + + if (!type.IsInterface && type.IsGenericType) + { + Type innerType = type.GetGenericArguments()[0]; + object innerValue = ChangeType(value, innerType); + return Activator.CreateInstance(type, new object[] { innerValue }); + } + + if (value is string && type == typeof(Guid)) return new Guid(value as string); + if (value is string && type == typeof(Version)) return new Version(value as string); + if (!(value is IConvertible)) return value; + return Convert.ChangeType(value, type); + } + + public static object ChangeTypeList(this object value, Type type) + { + if (value == null) return default; + + var gt = typeof(List<>).MakeGenericType(type); + dynamic lis = Activator.CreateInstance(gt); + + var addMethod = gt.GetMethod("Add"); + string values = value.ToString(); + if (values != null && values.StartsWith("(") && values.EndsWith(")")) + { + string[] splits; + if (values.Contains("\",\"")) + { + splits = values.Remove(values.Length - 2, 2) + .Remove(0, 2) + .Split("\",\""); + } + else + { + splits = values.Remove(0, 1) + .Remove(values.Length - 2, 1) + .Split(","); + } + + foreach (var split in splits) + { + var str = split; + if (split.StartsWith("\"") && split.EndsWith("\"")) + { + str = split.Remove(0, 1) + .Remove(split.Length - 2, 1); + } + + addMethod.Invoke(lis, new object[] { ChangeType(str, type) }); + } + } + + return lis; + } + + public static string ToJson(this object value) + { + return JsonConvert.SerializeObject(value); + } + + public static bool IsNumeric(this object value) + { + if (value == null) + return false; + bool reslut = decimal.TryParse(value.ToString(), out decimal _number); + return reslut; + } + + public static bool IsInt(this object obj) + { + if (obj == null) + return false; + bool reslut = Int32.TryParse(obj.ToString(), out int _number); + return reslut; + + } + public static bool IsDate(this object str) + { + return str.IsDate(out _); + } + public static bool IsDate(this object str, out DateTime dateTime) + { + dateTime = DateTime.Now; + if (str == null || str.ToString() == "") + { + return false; + } + return DateTime.TryParse(str.ToString(), out dateTime); + } + + /// <summary> + /// 鏍规嵁浼犲叆鏍煎紡鍒ゆ柇鏄惁涓哄皬鏁� + /// </summary> + /// <param name="str"></param> + /// <param name="formatString">18,5</param> + /// <returns></returns> + public static bool IsNumber(this string str, string formatString) + { + if (string.IsNullOrEmpty(str)) return false; + + return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"); + } + + public static bool IsGuid(this string guid) + { + Guid newId; + return guid.GetGuid(out newId); + } + + public static bool GetGuid(this string guid, out Guid outId) + { + Guid emptyId = Guid.Empty; + return Guid.TryParse(guid, out outId); + } + + /// <summary> + /// 杞崲涓虹煭鏁村瀷 qy 2024-7-15 + /// </summary> + /// <param name="data">鏁版嵁</param> + public static short ToShort(this object data) + { + if (data == null) + return 0; + short result; + var success = short.TryParse(data.ToString(), out result); + if (success) + return result; + try + { + return Convert.ToInt16(data); + } + catch (Exception) + { + return 0; + } + } + + /// <summary> + /// 杞崲涓洪珮绮惧害娴偣鏁�,骞舵寜鎸囧畾鐨勫皬鏁颁綅4鑸�5鍏� qy 2024-7-15 + /// </summary> + /// <param name="data">鏁版嵁</param> + /// <param name="digits">灏忔暟浣嶆暟</param> + public static decimal ToDecimal(this object data, int digits) + { + return Math.Round(ObjToDecimal(data), digits); + } + + + + /// <summary> + /// 鏋氫妇杞琇ist qy 2024-7-15 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + public static List<object> GetEnumList<T>() + { + List<object> list = new List<object>(); + var t = typeof(T); + foreach (var item in Enum.GetValues(typeof(T))) + { + FieldInfo f = t.GetField(Enum.GetName(typeof(T), item)); + var r = (System.ComponentModel.DescriptionAttribute[])f.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false); + list.Add(new { ID = item, value = Enum.GetName(typeof(T), item), name = r[0].Description }); + } + return list; + } + + /// <summary> + /// 楠岃瘉鍔ㄦ�佺被鍨嬪厓绱犳槸鍚︿负绌� qy 2024-7-15 + /// </summary> + /// <param name="obj"></param> + /// <returns></returns> + public static bool CheckDynamic(object obj) + { + return (obj != null && Convert.ToString(obj) != "") ? true : false; + } + + /// <summary> + /// 鍔ㄦ�佺被鍨嬪厓绱犺浆瀛楃涓插苟瑙g爜 qy 2024-7-15 + /// </summary> + /// <param name="obj"></param> + /// <returns></returns> + public static string DynamicToString(object obj) + { + return CheckDynamic(obj) ? HttpUtility.UrlDecode(Convert.ToString(obj).Trim()) : ""; + } + + /// <summary> + /// DataTable杞负json qy 2024-7-15 + /// </summary> + /// <param name="parObjRefDataTable">DataTable</param> + /// <returns>json鏁版嵁</returns> + public static string ToJson(this DataTable parObjRefDataTable) + { + List<object> objArrList = new List<object>(); + + foreach (DataRow objDataRow in parObjRefDataTable.Rows) + { + Dictionary<string, object> objResult = new Dictionary<string, object>(); + + foreach (DataColumn objDataColumn in parObjRefDataTable.Columns) + objResult.Add(objDataColumn.ColumnName, objDataRow[objDataColumn].ToString()); + + objArrList.Add(objResult); + } + + return ToJson(objArrList); + } + /// <summary> + /// Json杞琇ist qy 2024-7-15 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="parJson"></param> + /// <returns></returns> + public static List<T> JsonToList<T>(this string parJson) + { + if (string.IsNullOrWhiteSpace(parJson)) + { + return new List<T>(); + } + else + { + return JsonConvert.DeserializeObject<List<T>>(parJson); + } + } + + /// <summary> + /// 鏃ユ湡杞负unix鍊� + /// </summary> + /// <param name="dt"></param> + /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param> + /// <returns></returns> + public static double ToUnix(this DateTime dt, bool utc = true) + { + double intResult = 0; + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); + intResult = (dt - startTime).TotalSeconds; + intResult = Math.Round(intResult, 0); + return intResult; + } + + #region 鍒ゆ柇鏄惁涓哄瓧绗︿覆 qy 2024-7-15 + /// <summary> + /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鍚堟硶鐨刯son瀛楃涓� qy 2024-7-15 + /// </summary> + /// <param name="json"></param> + /// <returns></returns> + public static bool IsJson(string json) + { + int errIndex; + return IsJson(json, out errIndex); + } + public static bool IsJson(string json, out int errIndex) + { + errIndex = 0; + if (IsJsonStart(ref json)) + { + CharState cs = new CharState(); + char c; + for (int i = 0; i < json.Length; i++) + { + c = json[i]; + if (SetCharState(c, ref cs) && cs.childrenStart)//璁剧疆鍏抽敭绗﹀彿鐘舵�併�� + { + string item = json.Substring(i); + int err; + int length = GetValueLength(item, true, out err); + cs.childrenStart = false; + if (err > 0) + { + errIndex = i + err; + return false; + } + i = i + length - 1; + } + if (cs.isError) + { + errIndex = i; + return false; + } + } + + return !cs.arrayStart && !cs.jsonStart; + } + return false; + } + + private static bool IsJsonStart(ref string json) + { + if (!string.IsNullOrEmpty(json)) + { + json = json.Trim('\r', '\n', ' '); + if (json.Length > 1) + { + char s = json[0]; + char e = json[json.Length - 1]; + return (s == '{' && e == '}') || (s == '[' && e == ']'); + } + } + return false; + } + + /// <summary> + /// 鑾峰彇鍊肩殑闀垮害锛堝綋Json鍊煎祵濂椾互"{"鎴�"["寮�澶存椂锛� qy 2024-7-15 + /// </summary> + private static int GetValueLength(string json, bool breakOnErr, out int errIndex) + { + errIndex = 0; + int len = 0; + if (!string.IsNullOrEmpty(json)) + { + CharState cs = new CharState(); + char c; + for (int i = 0; i < json.Length; i++) + { + c = json[i]; + if (!SetCharState(c, ref cs))//璁剧疆鍏抽敭绗﹀彿鐘舵�併�� + { + if (!cs.jsonStart && !cs.arrayStart)//json缁撴潫锛屽張涓嶆槸鏁扮粍锛屽垯閫�鍑恒�� + { + break; + } + } + else if (cs.childrenStart)//姝e父瀛楃锛屽�肩姸鎬佷笅銆� + { + int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//閫掑綊瀛愬�硷紝杩斿洖涓�涓暱搴︺�傘�傘�� + cs.childrenStart = false; + cs.valueStart = 0; + //cs.state = 0; + i = i + length - 1; + } + if (breakOnErr && cs.isError) + { + errIndex = i; + return i; + } + if (!cs.jsonStart && !cs.arrayStart)//璁板綍褰撳墠缁撴潫浣嶇疆銆� + { + len = i + 1;//闀垮害姣旂储寮�+1 + break; + } + } + } + return len; + } + + /// <summary> + /// 瀛楃鐘舵�� qy 2024-7-15 + /// </summary> + private class CharState + { + internal bool jsonStart = false;//浠� "{"寮�濮嬩簡... + internal bool setDicValue = false;// 鍙互璁剧疆瀛楀吀鍊间簡銆� + internal bool escapeChar = false;//浠�"\"杞箟绗﹀彿寮�濮嬩簡 + /// <summary> + /// 鏁扮粍寮�濮嬨�愪粎绗竴寮�澶存墠绠椼�戯紝鍊煎祵濂楃殑浠ャ�恈hildrenStart銆戞潵鏍囪瘑銆� + /// </summary> + internal bool arrayStart = false;//浠�"[" 绗﹀彿寮�濮嬩簡 + internal bool childrenStart = false;//瀛愮骇宓屽寮�濮嬩簡銆� + /// <summary> + /// 銆�0 鍒濆鐘舵�侊紝鎴� 閬囧埌鈥�,鈥濋�楀彿銆戯紱銆�1 閬囧埌鈥滐細鈥濆啋鍙枫�� + /// </summary> + internal int state = 0; + + /// <summary> + /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨�� + /// </summary> + internal int keyStart = 0; + /// <summary> + /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨�� + /// </summary> + internal int valueStart = 0; + internal bool isError = false;//鏄惁璇硶閿欒銆� + + internal void CheckIsError(char c)//鍙綋鎴愪竴绾у鐞嗭紙鍥犱负GetLength浼氶�掑綊鍒版瘡涓�涓瓙椤瑰鐞嗭級 + { + if (keyStart > 1 || valueStart > 1) + { + return; + } + //绀轰緥 ["aa",{"bbbb":123,"fff","ddd"}] + switch (c) + { + case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}] + isError = jsonStart && state == 0;//閲嶅寮�濮嬮敊璇� 鍚屾椂涓嶆槸鍊煎鐞嗐�� + break; + case '}': + isError = !jsonStart || (keyStart != 0 && state == 0);//閲嶅缁撴潫閿欒 鎴栬�� 鎻愬墠缁撴潫{"aa"}銆傛甯哥殑鏈墈} + break; + case '[': + isError = arrayStart && state == 0;//閲嶅寮�濮嬮敊璇� + break; + case ']': + isError = !arrayStart || jsonStart;//閲嶅寮�濮嬮敊璇� 鎴栬�� Json 鏈粨鏉� + break; + case '"': + case '\'': + isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨�� + if (!isError) + { + //閲嶅寮�濮� [""",{"" "}] + isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1); + } + if (!isError && arrayStart && !jsonStart && c == '\'')//['aa',{}] + { + isError = true; + } + break; + case ':': + isError = !jsonStart || state == 1;//閲嶅鍑虹幇銆� + break; + case ',': + isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨�� + if (!isError) + { + if (jsonStart) + { + isError = state == 0 || (state == 1 && valueStart > 1);//閲嶅鍑虹幇銆� + } + else if (arrayStart)//["aa,] [,] [{},{}] + { + isError = keyStart == 0 && !setDicValue; + } + } + break; + case ' ': + case '\r': + case '\n'://[ "a",\r\n{} ] + case '\0': + case '\t': + break; + default: //鍊煎紑澶淬�傘�� + isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);// + break; + } + //if (isError) + //{ + + //} + } + } + /// <summary> + /// 璁剧疆瀛楃鐘舵��(杩斿洖true鍒欎负鍏抽敭璇嶏紝杩斿洖false鍒欏綋涓烘櫘閫氬瓧绗﹀鐞嗭級 qy 2024-7-15 + /// </summary> + private static bool SetCharState(char c, ref CharState cs) + { + cs.CheckIsError(c); + switch (c) + { + case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}] + #region 澶ф嫭鍙� + if (cs.keyStart <= 0 && cs.valueStart <= 0) + { + cs.keyStart = 0; + cs.valueStart = 0; + if (cs.jsonStart && cs.state == 1) + { + cs.childrenStart = true; + } + else + { + cs.state = 0; + } + cs.jsonStart = true;//寮�濮嬨�� + return true; + } + #endregion + break; + case '}': + #region 澶ф嫭鍙风粨鏉� + if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart) + { + cs.jsonStart = false;//姝e父缁撴潫銆� + cs.state = 0; + cs.keyStart = 0; + cs.valueStart = 0; + cs.setDicValue = true; + return true; + } + // cs.isError = !cs.jsonStart && cs.state == 0; + #endregion + break; + case '[': + #region 涓嫭鍙峰紑濮� + if (!cs.jsonStart) + { + cs.arrayStart = true; + return true; + } + else if (cs.jsonStart && cs.state == 1) + { + cs.childrenStart = true; + return true; + } + #endregion + break; + case ']': + #region 涓嫭鍙风粨鏉� + if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//杩欐牱缁撴潫銆� + { + cs.keyStart = 0; + cs.valueStart = 0; + cs.arrayStart = false; + return true; + } + #endregion + break; + case '"': + case '\'': + #region 寮曞彿 + if (cs.jsonStart || cs.arrayStart) + { + if (cs.state == 0)//key闃舵,鏈夊彲鑳芥槸鏁扮粍["aa",{}] + { + if (cs.keyStart <= 0) + { + cs.keyStart = (c == '"' ? 3 : 2); + return true; + } + else if ((cs.keyStart == 2 && c == '\'') || (cs.keyStart == 3 && c == '"')) + { + if (!cs.escapeChar) + { + cs.keyStart = -1; + return true; + } + else + { + cs.escapeChar = false; + } + } + } + else if (cs.state == 1 && cs.jsonStart)//鍊奸樁娈靛繀椤绘槸Json寮�濮嬩簡銆� + { + if (cs.valueStart <= 0) + { + cs.valueStart = (c == '"' ? 3 : 2); + return true; + } + else if ((cs.valueStart == 2 && c == '\'') || (cs.valueStart == 3 && c == '"')) + { + if (!cs.escapeChar) + { + cs.valueStart = -1; + return true; + } + else + { + cs.escapeChar = false; + } + } + + } + } + #endregion + break; + case ':': + #region 鍐掑彿 + if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0) + { + if (cs.keyStart == 1) + { + cs.keyStart = -1; + } + cs.state = 1; + return true; + } + // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1); + #endregion + break; + case ',': + #region 閫楀彿 //["aa",{aa:12,}] + + if (cs.jsonStart) + { + if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1) + { + cs.state = 0; + cs.keyStart = 0; + cs.valueStart = 0; + //if (cs.valueStart == 1) + //{ + // cs.valueStart = 0; + //} + cs.setDicValue = true; + return true; + } + } + else if (cs.arrayStart && cs.keyStart <= 2) + { + cs.keyStart = 0; + //if (cs.keyStart == 1) + //{ + // cs.keyStart = -1; + //} + return true; + } + #endregion + break; + case ' ': + case '\r': + case '\n'://[ "a",\r\n{} ] + case '\0': + case '\t': + if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart && + { + return true;//璺宠繃绌烘牸銆� + } + break; + default: //鍊煎紑澶淬�傘�� + if (c == '\\') //杞箟绗﹀彿 + { + if (cs.escapeChar) + { + cs.escapeChar = false; + } + else + { + cs.escapeChar = true; + return true; + } + } + else + { + cs.escapeChar = false; + } + if (cs.jsonStart || cs.arrayStart) // Json 鎴栨暟缁勫紑濮嬩簡銆� + { + if (cs.keyStart <= 0 && cs.state == 0) + { + cs.keyStart = 1;//鏃犲紩鍙风殑 + } + else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//鍙湁Json寮�濮嬫墠鏈夊�笺�� + { + cs.valueStart = 1;//鏃犲紩鍙风殑 + } + } + break; + } + return false; + } + + #endregion + + public static LinqExpressionType GetLinqCondition(this string stringType) + { + LinqExpressionType linqExpression; + switch (stringType) + { + case HtmlElementType.Contains: + linqExpression = LinqExpressionType.In; + break; + case HtmlElementType.ThanOrEqual: + linqExpression = LinqExpressionType.ThanOrEqual; + break; + case HtmlElementType.LessOrequal: + linqExpression = LinqExpressionType.LessThanOrEqual; + break; + case HtmlElementType.GT: + linqExpression = LinqExpressionType.GreaterThan; + break; + case HtmlElementType.lt: + linqExpression = LinqExpressionType.LessThan; + break; + case HtmlElementType.like: + linqExpression = LinqExpressionType.Contains; + break; + default: + linqExpression = LinqExpressionType.Equal; + break; + } + return linqExpression; + } + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationEnum.cs" new file mode 100644 index 0000000..f7cbac2 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationEnum.cs" @@ -0,0 +1,87 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Common.LocationEnum +{ + /// <summary> + /// 璐т綅鐘舵�� + /// </summary> + public enum LocationStatusEnum + { + /// <summary> + /// 绌洪棽 + /// </summary> + [Description("绌洪棽")] + Free = 0, + + /// <summary> + /// 閿佸畾 + /// </summary> + [Description("閿佸畾")] + Lock = 1, + + /// <summary> + /// 鏈夎揣 + /// </summary> + [Description("鏈夎揣")] + InStock = 2, + + /// <summary> + /// 绌烘墭閿佸畾 + /// </summary> + [Description("绌烘墭閿佸畾")] + PalletLock = 98, + + /// <summary> + /// 绌烘墭鐩� + /// </summary> + [Description("绌烘墭鐩�")] + Pallet = 99 + } + + public enum EnableStatusEnum + { + /// <summary> + /// 姝e父 + /// </summary> + [Description("姝e父")] + Normal = 0, + + /// <summary> + /// 鍙叆 + /// </summary> + [Description("鍙叆")] + OnlyIn = 1, + + /// <summary> + /// 鍙嚭 + /// </summary> + [Description("鍙嚭")] + OnlyOut = 2, + + /// <summary> + /// 绂佺敤 + /// </summary> + [Description("绂佺敤")] + Disable = 3 + } + + public enum LocationTypeEnum + { + /// <summary> + /// 绔嬪簱 + /// </summary> + [Description("绔嬪簱璐т綅")] + Cube = 1, + + /// <summary> + /// 骞冲簱 + /// </summary> + [Description("骞冲簱璐т綅")] + Flat = 2 + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" index 1919700..c88b7c1 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" @@ -15,41 +15,17 @@ [Description("鏂板缓鍏ュ簱浠诲姟")] InNew = 200, - ///// <summary> - ///// AGV鍏ュ簱鎵ц涓� - ///// </summary> - //[Description("AGV鍏ュ簱鎵ц涓�")] - //AGV_InExecuting = 210, - - ///// <summary> - ///// AGV鍏ュ簱瀹屾垚 - ///// </summary> - //[Description("AGV鎼繍瀹屾垚")] - //AGV_InFinish = 215, - /// <summary> - /// 杈撻�佺嚎鍏ュ簱鎵ц涓� + /// 澶╄溅鍏ュ簱鎵ц涓� /// </summary> - [Description("杈撻�佺嚎鍏ュ簱鎵ц涓�")] + [Description("澶╄溅鍏ュ簱鎵ц涓�")] Line_InExecuting = 220, /// <summary> - /// 杈撻�佺嚎鍏ュ簱瀹屾垚 + /// 澶╄溅鍏ュ簱瀹屾垚 /// </summary> - [Description("杈撻�佺嚎杈撻�佸畬鎴�")] + [Description("澶╄溅鍏ュ簱瀹屾垚")] Line_InFinish = 225, - - /// <summary> - /// 鍫嗗灈鏈哄叆搴撴墽琛屼腑 - /// </summary> - [Description("鍫嗗灈鏈哄叆搴撴墽琛屼腑")] - SC_InExecuting = 230, - - /// <summary> - /// 鍫嗗灈鏈哄叆搴撳畬鎴� - /// </summary> - [Description("鍫嗗灈鏈哄叆搴撳畬鎴�")] - SC_InFinish = 235, /// <summary> /// 鍏ュ簱浠诲姟瀹屾垚 diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" index 132c02c..f958b97 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" @@ -6,4 +6,8 @@ <Nullable>enable</Nullable> </PropertyGroup> + <ItemGroup> + <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> + </ItemGroup> + </Project> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs" new file mode 100644 index 0000000..850728e --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs" @@ -0,0 +1,49 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Core.Attributes; + +namespace WIDESEAWCS_DTO.BasicInfo +{ + [ModelValidate] + public class InitializationLocationDTO + { + /// <summary> + /// 宸烽亾鍙� + /// </summary> + [PropertyValidate("宸烽亾鍙�", NotNullAndEmpty = true)] + public string Roadway { get; set; } + + /// <summary> + /// 琛� + /// </summary> + [PropertyValidate("琛�", MinValue = 0, IsContainMinValue = false)] + public int MaxRow { get; set; } + + /// <summary> + /// 鍒� + /// </summary> + [PropertyValidate("鍒�", MinValue = 0, IsContainMinValue = false)] + public int MaxColumn { get; set; } + + /// <summary> + /// 灞� + /// </summary> + [PropertyValidate("灞�", MinValue = 0, IsContainMinValue = false)] + public int MaxLayer { get; set; } + + /// <summary> + /// 鏄惁鍗曟繁璐т綅 + /// </summary> + [PropertyValidate("鏄惁鍗曟繁璐т綅", NotNullAndEmpty = true)] + public bool IsSingleDepth { get; set; } + + /// <summary> + /// 涓�娣辫鍙� + /// </summary> + [PropertyValidate("涓�娣辫鍙�", NotNullAndEmptyWithPropertyAndValue = new string[] { nameof(IsSingleDepth), "false" })] + public List<int> FirstDepthRows { get; set; } + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" index cc0b784..98532af 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" @@ -10,8 +10,4 @@ <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" /> </ItemGroup> - <ItemGroup> - <Folder Include="BasicInfo\" /> - </ItemGroup> - </Project> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IWMSPart/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IWMSPart/ILocationInfoService.cs" index 926a4d5..08a9e97 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IWMSPart/ILocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IWMSPart/ILocationInfoService.cs" @@ -3,6 +3,7 @@ using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Model.Models; +using WIDESEAWCS_DTO.BasicInfo; namespace WIDESEAWCS_IWMSPart { @@ -17,5 +18,7 @@ WebResponseContent GetLocationLayer(); WebResponseContent GetLocationConfigs(int layer); + + WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO); } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs" index 4af342e..f114e4f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs" @@ -22,6 +22,7 @@ using WIDESEAWCS_Core.Caches; using WIDESEAWCS_QuartzJob.DeviceEnum; using WIDESEAWCS_Core.Enums; +using WIDESEAWCS_Common.LocationEnum; namespace WIDESEAWCS_WCSServer.Controllers.System { @@ -365,6 +366,88 @@ result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; } break; + + case "enableStatusEnum": + { + List<object> data = new List<object>(); + + { + Type type = typeof(EnableStatusEnum); + List<int> enums = Enum.GetValues(typeof(EnableStatusEnum)).Cast<int>().ToList(); + int index = 0; + foreach (var item in enums) + { + FieldInfo? fieldInfo = typeof(EnableStatusEnum).GetField(((EnableStatusEnum)item).ToString()); + DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); + if (description != null) + { + data.Add(new { key = item.ToString(), value = description.Description }); + } + else + { + data.Add(new { key = item.ToString(), value = item.ToString() }); + } + index++; + } + } + + result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; + } + break; + case "locationStatusEnum": + { + List<object> data = new List<object>(); + + { + Type type = typeof(LocationStatusEnum); + List<int> enums = Enum.GetValues(typeof(LocationStatusEnum)).Cast<int>().ToList(); + int index = 0; + foreach (var item in enums) + { + FieldInfo? fieldInfo = typeof(LocationStatusEnum).GetField(((LocationStatusEnum)item).ToString()); + DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); + if (description != null) + { + data.Add(new { key = item.ToString(), value = description.Description }); + } + else + { + data.Add(new { key = item.ToString(), value = item.ToString() }); + } + index++; + } + } + + result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; + } + break; + case "locationTypeEnum": + { + List<object> data = new List<object>(); + + { + Type type = typeof(LocationTypeEnum); + List<int> enums = Enum.GetValues(typeof(LocationTypeEnum)).Cast<int>().ToList(); + int index = 0; + foreach (var item in enums) + { + FieldInfo? fieldInfo = typeof(LocationTypeEnum).GetField(((LocationTypeEnum)item).ToString()); + DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); + if (description != null) + { + data.Add(new { key = item.ToString(), value = description.Description }); + } + else + { + data.Add(new { key = item.ToString(), value = item.ToString() }); + } + index++; + } + } + + result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; + } + break; } return result; } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMSPart/LocationInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMSPart/LocationInfoController.cs" index c402e3e..5fbfc1d 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMSPart/LocationInfoController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMSPart/LocationInfoController.cs" @@ -6,6 +6,7 @@ using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_Core.Enums; +using WIDESEAWCS_DTO.BasicInfo; using WIDESEAWCS_IWMSPart; using WIDESEAWCS_Model.Models; @@ -36,5 +37,11 @@ { return Service.GetLocationLayer(); } + + [HttpPost, Route("InitializationLocation"), AllowAnonymous] + public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO) + { + return Service.InitializationLocation(initializationLocationDTO); + } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" index 70debad..8816fba 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" @@ -6,7 +6,7 @@ "Microsoft.AspNetCore": "Warning" } }, - "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType", + "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType,enableStatusEnum,locationStatusEnum,locationTypeEnum", "AllowedHosts": "*", "ConnectionStringsEncryption": false, "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" index 9d2d993..43eaeac 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -454,7 +454,7 @@ //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙� } - else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { //todo int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs" new file mode 100644 index 0000000..507f500 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs" @@ -0,0 +1,135 @@ +锘縰sing Autofac.Core; +using HslCommunication; +using HslCommunication.Core; +using HslCommunication.WebSocket; +using Microsoft.Extensions.Hosting; +using Microsoft.VisualBasic.FileIO; +using Newtonsoft.Json; +using Quartz; +using SixLabors.ImageSharp.PixelFormats; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.StackerCrane.Enum; +using WIDESEAWCS_Tasks.OHT; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class GZJJob : JobBase, IJob + { + private readonly ITaskService _taskService; + WebSocketServer _webSocketServer; + public GZJJob(ITaskService taskService, WebSocketServer webSocketServer) + { + _taskService = taskService;//娉ㄥ叆 + _webSocketServer = webSocketServer; + } + + public Task Execute(IJobExecutionContext context) + { + + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + try + { + //Example + //device.GetValue 璇诲彇 + //device.SetValue 鍐欏叆 + //_taskService.Repository; //浠撳偍灞傦紝杩涜鏁版嵁搴撹闂� + OHTReadData oHTReadData = new OHTReadData(); + //todo:璇诲彇璁惧鏁版嵁锛� + + + //todo:璁惧鐘舵�佹暟鎹彂閫佺粰鍓嶇 + + + + //WriteInfo(device.DeviceName, "infoLog"); + + //WriteDebug(device.DeviceName, "debugLog"); + } + catch (Exception ex) + { + WriteError(device.DeviceName, "閿欒", ex); + } + } + + + return Task.CompletedTask; + } + + + /// <summary> + /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel + /// </summary> + /// <param name="task">浠诲姟瀹炰綋</param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OHTTaskCommand? ConvertToOHTTaskCommand([NotNull] Dt_Task task) + { + OHTTaskCommand oHtTaskCommand = new OHTTaskCommand(); + + oHtTaskCommand.W_Task_Type = 1; + oHtTaskCommand.W_Load_Layer = 0; + oHtTaskCommand.W_Pick_Line = 1; + + string[] SourceCodes = task.SourceAddress.Split("-"); + if (SourceCodes.Length == 3) + { + oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(SourceCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�"); + return null; + } + string[] targetCodes = task.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + oHtTaskCommand.W_Put_Line = Convert.ToInt16(targetCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(targetCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(targetCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟鐩爣鍦板潃閰嶇疆閿欒"); + return null; + } + return oHtTaskCommand; + } + + + /// <summary> + /// 鑾峰彇浠诲姟 + /// </summary> + /// <returns></returns> + private Dt_Task? GetTask() + { + Dt_Task task; + task = _taskService.QueryStackerCraneTask("R01"); + return task; + } + + + } + + +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs" new file mode 100644 index 0000000..e7ace95 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs" @@ -0,0 +1,230 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks +{ + /// <summary> + /// 杩愯妯″紡 + /// </summary> + public enum RunModeEnum + { + /// <summary> + /// 鏈煡 + /// </summary> + [Description("鏈煡")] + UnKnown = 0, + /// <summary> + /// 鑷姩 + /// </summary> + [Description("鑷姩")] + Automatic = 1, + /// <summary> + /// 鍗婅嚜鍔� + /// </summary> + [Description("鍗婅嚜鍔�")] + SemiAutomatic = 2, + /// <summary> + /// 鎵嬪姩 + /// </summary> + [Description("鎵嬪姩")] + Manual = 3, + /// <summary> + /// 缁翠慨 + /// </summary> + [Description("缁翠慨")] + Maintenance = 4, + } + + /// <summary> + /// 杩愯鐘舵�� + /// </summary> + public enum RunStateEnum + { + [Description("绌洪棽")] + Standby=0, + [Description("鍙栬揣琛岃蛋")] + PickUp=1, + [Description("鍙栬揣璇锋眰")] + PickUpRequest=2, + [Description("鍙栬揣涓�")] + PickUping=3, + [Description("鍙栬揣瀹屾垚")] + PickUpCompleted=4, + [Description("鏀捐揣琛岃蛋")] + Put=5, + [Description("鏀捐揣璇锋眰")] + PutRequest=6, + [Description("鏀捐揣涓�")] + Puting=7, + [Description("鏀捐揣瀹屾垚")] + PutCompleted=8, + [Description("绉诲姩涓�")] + Moving=9, + [Description("绉诲姩瀹屾垚")] + MoveCompleted=10, + + } + + /// <summary> + /// 澶╄溅鎶ヨ浠g爜 + /// </summary> + public enum AlarmCodeEnum + { + [Description("姝e父")] + Normal = 0, + [Description("鏁呴殰鏁板瓧")] + AlarmCode = 1, + [Description("绌哄彇")] + EmptyPickUp = 2 + } + + /// <summary> + /// 澶╄溅浠诲姟鐘舵�� + /// </summary> + public enum TaskStateEnum + { + [Description("榛樿")] + Normal = 0, + [Description("纭鎺ユ敹浠诲姟")] + AcceptTaskConfirm = 1, + [Description("浠诲姟鎵ц涓�")] + TaskExcuting = 2, + [Description("姝e父瀹屾垚浠诲姟")] + TaskComplete = 3, + [Description("浠诲姟鏆傚仠涓�")] + TaskPausing = 4, + [Description("鏃犳硶瀹屾垚浠诲姟")] + TaskNOComplete = 5, + [Description("浠诲姟琚汉宸ユ竻闄�")] + TaskManualClear = 6 + } + + public enum DeviceDBName + { + #region 璇诲彇DB鍧� + /// <summary> + /// 蹇冭烦 + /// </summary> + [Description("蹇冭烦")] + R_HeartBeat, + /// <summary> + /// 杩愯妯″紡 + /// </summary> + [Description("杩愯妯″紡")] + R_RunMode, + /// <summary> + /// 杩愯鐘舵�� + /// </summary> + [Description("杩愯鐘舵��")] + R_RunState , + + /// <summary> + /// 鏁呴殰浠g爜 + /// </summary> + [Description("鏁呴殰浠g爜")] + R_AlarmCode, + + /// <summary> + /// 浠诲姟鐘舵�� + /// </summary> + [Description("浠诲姟鐘舵��")] + R_TaskState, + + /// <summary> + /// 澶╄溅澶ц溅褰撳墠浣嶇疆 + /// </summary> + [Description("澶╄溅澶ц溅褰撳墠浣嶇疆")] + R_CurrentLine, + /// <summary> + /// 澶╄溅灏忚溅褰撳墠浣嶇疆 + /// </summary> + [Description("澶╄溅灏忚溅褰撳墠浣嶇疆")] + R_CurrentColumn, + + /// <summary> + /// 璧峰崌褰撳墠浣嶇疆 + /// </summary> + [Description("璧峰崌褰撳墠浣嶇疆")] + R_RiseUp_Position, + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + [Description("浠诲姟鍙�")] + R_TaskNumber, + + /// <summary> + /// 1鍙疯揣鐖槸鍚︽湁璐э紙淇濈暀锛� + /// </summary> + [Description("1鍙疯揣鐖湁璐�")] + R_Loaded_1, + + /// <summary> + /// 2鍙疯揣鐖槸鍚︽湁璐э紙淇濈暀锛� + /// </summary> + [Description("2鍙疯揣鐖湁璐�")] + R_Loaded_2, + + /// <summary> + /// 1鍙疯揣鐖壂鐮佺粨鏋� + /// </summary> + [Description("1鍙疯揣鐖壂鐮佺粨鏋�")] + R_Code_1, + + /// <summary> + /// 2鍙疯揣鐖壂鐮佺粨鏋� + /// </summary> + [Description("2鍙疯揣鐖壂鐮佺粨鏋�")] + R_Code_2, + + + /// <summary> + /// 1鍙疯杞︿綅璇锋眰 + /// </summary> + [Description("1鍙疯杞︿綅璇锋眰")] + R_Load_Requst_1, + + /// <summary> + /// 2鍙疯杞︿綅璇锋眰 + /// </summary> + [Description("2鍙疯杞︿綅璇锋眰")] + R_Load_Requst_2, + #endregion + + #region 鍐橠B鍧� + [Description("蹇冭烦")] + W_HeartBeat, + [Description("浠诲姟绫诲瀷")] + W_Task_Type, + [Description("瑁呰溅灞傛暟")] + W_Load_Layer, + [Description("鍙栬揣琛�")] + W_Pick_Line, + [Description("鍙栬揣鍒�")] + W_Pick_Column, + [Description("鍙栬揣灞�")] + W_Pick_Layer, + [Description("鏀捐揣琛�")] + W_Put_Line, + [Description("鏀捐揣鍒�")] + W_Put_Column, + [Description("鏀捐揣灞�")] + W_Put_Layer, + [Description("璐х埅1鏄惁鎶撹揣")] + W_Catch_1, + [Description("璐х埅2鏄惁鎶撹揣")] + W_Catch_2, + [Description("浠诲姟鍙�")] + W_TaskNumber, + [Description("鏍¢獙鍊�")] + W_CheckValue, + [Description("纭淇″彿")] + W_ConfirmSignal, + #endregion + + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs" new file mode 100644 index 0000000..7b60067 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs" @@ -0,0 +1,206 @@ +锘縰sing Autofac.Core; +using HslCommunication; +using HslCommunication.Core; +using HslCommunication.WebSocket; +using Microsoft.Extensions.Hosting; +using Microsoft.VisualBasic.FileIO; +using Newtonsoft.Json; +using Quartz; +using SixLabors.ImageSharp.PixelFormats; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.StackerCrane.Enum; +using WIDESEAWCS_Tasks.OHT; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class OHTJob : JobBase, IJob + { + private readonly ITaskService _taskService; + WebSocketServer _webSocketServer; + public OHTJob(ITaskService taskService, WebSocketServer webSocketServer) + { + _taskService = taskService;//娉ㄥ叆 + _webSocketServer = webSocketServer; + } + + public Task Execute(IJobExecutionContext context) + { + + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + try + { + //Example + //device.GetValue 璇诲彇 + //device.SetValue 鍐欏叆 + //_taskService.Repository; //浠撳偍灞傦紝杩涜鏁版嵁搴撹闂� + OHTReadData oHTReadData = new OHTReadData(); + #region 璇诲彇澶╄溅璁惧鏁版嵁 + oHTReadData.R_HeartBeat = device.GetValue<DeviceDBName, short>(DeviceDBName.R_HeartBeat); + oHTReadData.R_RunMode = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RunMode); + oHTReadData.R_RunState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RunState); + oHTReadData.R_AlarmCode = device.GetValue<DeviceDBName, short>(DeviceDBName.R_AlarmCode); + oHTReadData.R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState); + oHTReadData.R_CurrentLine = device.GetValue<DeviceDBName, short>(DeviceDBName.R_CurrentLine); + oHTReadData.R_CurrentColumn = device.GetValue<DeviceDBName, short>(DeviceDBName.R_CurrentColumn); + oHTReadData.R_RiseUp_Position = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RiseUp_Position); + oHTReadData.R_TaskNumber = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskNumber); + oHTReadData.R_Loaded_1 = device.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_1); + oHTReadData.R_Loaded_2 = device.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_2); + oHTReadData.R_Code_1 = device.GetValue<DeviceDBName, string>(DeviceDBName.R_Code_1); + oHTReadData.R_Code_2 = device.GetValue<DeviceDBName, string>(DeviceDBName.R_Code_2); + oHTReadData.R_Load_Requst_1 = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_Load_Requst_1); + oHTReadData.R_Load_Requst_2 = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_Load_Requst_2); + #region 娴嬭瘯鐢� + //oHTReadData.R_HeartBeat = 1; + //oHTReadData.R_RunMode = 2; + //oHTReadData.R_RunState = 3; + //oHTReadData.R_AlarmCode = 4; + //oHTReadData.R_TaskState = 5; + //oHTReadData.R_CurrentLine = 6; + //oHTReadData.R_CurrentColumn = 7; + //oHTReadData.R_RiseUp_Position = 8; + //oHTReadData.R_TaskNumber = 9; + //oHTReadData.R_Loaded_1 =10; + //oHTReadData.R_Loaded_2 = 11; + //oHTReadData.R_Code_1 = "12"; + //oHTReadData.R_Code_2 = "13"; + //oHTReadData.R_Load_Requst_1 =true; + //oHTReadData.R_Load_Requst_2 = false; + #endregion + + #endregion + + //鐘舵�佹暟鎹彂閫佺粰鍓嶇 + string ohtData = JsonConvert.SerializeObject(oHTReadData); + _webSocketServer.PublishAllClientPayload(ohtData); + + if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic && oHTReadData.R_AlarmCode == (int)AlarmCodeEnum.Normal) + { + if (oHTReadData.R_RunState == (int)RunStateEnum.Standby) + { + Dt_Task? task = GetTask(); + if (task != null) + { + OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task); + if (oHTTaskCommand != null) + { + //todo锛氬啓鍏ヤ换鍔″懡浠� + device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type); + device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line); + device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column); + device.SetValue(DeviceDBName.W_Pick_Layer, oHTTaskCommand.W_Pick_Layer); + device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line); + device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column); + device.SetValue(DeviceDBName.W_Put_Layer, oHTTaskCommand.W_Put_Layer); + device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1); + device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2); + device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber); + device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber); + device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue); + //纭淇″彿鍐欏叆1锛屼换鍔′笅杈惧畬鎴� + device.SetValue(DeviceDBName.W_ConfirmSignal, 1); + //WCS妫�娴嬪埌澶╄溅鐨凴_TaskState=1锛岄�氳繃W_ConfirmSignal缃�2琛ㄧず璁╁ぉ杞﹀紑濮嬫墽琛屼换鍔� + int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState); + if (R_TaskState == 1) + { + device.SetValue(DeviceDBName.W_ConfirmSignal, 2); + } + } + + } + + } + + } + WriteInfo(device.DeviceName, "infoLog"); + + WriteDebug(device.DeviceName, "debugLog"); + } + catch (Exception ex) + { + WriteError(device.DeviceName, "閿欒", ex); + } + } + + + return Task.CompletedTask; + } + + + /// <summary> + /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel + /// </summary> + /// <param name="task">浠诲姟瀹炰綋</param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OHTTaskCommand? ConvertToOHTTaskCommand([NotNull] Dt_Task task) + { + OHTTaskCommand oHtTaskCommand = new OHTTaskCommand(); + + oHtTaskCommand.W_Task_Type = 1; + oHtTaskCommand.W_Load_Layer = 0; + oHtTaskCommand.W_Pick_Line = 1; + + string[] SourceCodes = task.SourceAddress.Split("-"); + if (SourceCodes.Length == 3) + { + oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(SourceCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�"); + return null; + } + string[] targetCodes = task.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + oHtTaskCommand.W_Put_Line = Convert.ToInt16(targetCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(targetCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(targetCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟鐩爣鍦板潃閰嶇疆閿欒"); + return null; + } + return oHtTaskCommand; + } + + + /// <summary> + /// 鑾峰彇浠诲姟 + /// </summary> + /// <returns></returns> + private Dt_Task? GetTask() + { + Dt_Task task; + task = _taskService.QueryStackerCraneTask("R01"); + return task; + } + + + } + + +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs" new file mode 100644 index 0000000..d9845bd --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs" @@ -0,0 +1,88 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks.OHT +{ + public class OHTReadData + { + /// <summary> + /// 蹇冭烦 + /// </summary> + public short R_HeartBeat { get; set; } + + /// <summary> + /// 褰撳墠杩愯妯″紡 + /// </summary> + public short R_RunMode { get; set; } + /// <summary> + /// 杩愯鐘舵�� + /// </summary> + public short R_RunState { get; set; } + + /// <summary> + /// 鎶ヨ浠g爜 + /// </summary> + public short R_AlarmCode { get; set; } + + /// <summary> + /// 浠诲姟鐘舵�� + /// </summary> + public short R_TaskState { get; set; } + + /// <summary> + /// 澶╄溅澶ц溅褰撳墠浣嶇疆 + /// </summary> + public short R_CurrentLine { get; set; } + + + /// <summary> + /// 澶╄溅灏忚溅褰撳墠浣嶇疆 + /// </summary> + public short R_CurrentColumn { get; set; } + + /// <summary> + /// 璧峰崌褰撳墠浣嶇疆 + /// </summary> + public short R_RiseUp_Position { get; set; } + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public short R_TaskNumber { get; set; } + + /// <summary> + /// 1鍙疯揣鐖槸鍚︽湁璐� + /// </summary> + public short R_Loaded_1 { get; set; } + + /// <summary> + /// 2鍙疯揣鐖槸鍚︽湁璐� + /// </summary> + public short R_Loaded_2 { get; set; } + + /// <summary> + /// 1鍙疯揣鐖壂鐮佺粨鏋� + /// </summary> + public string R_Code_1 { get; set; } + + /// <summary> + /// 2鍙疯揣鐖壂鐮佺粨鏋� + /// </summary> + public string R_Code_2 { get; set; } + + + + /// <summary> + /// 1鍙疯杞︿綅璇锋眰 + /// </summary> + public bool R_Load_Requst_1 { get; set; } + + /// <summary> + /// 2鍙疯杞︿綅璇锋眰 + /// </summary> + public bool R_Load_Requst_2 { get; set; } + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTTaskCommand.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTTaskCommand.cs" new file mode 100644 index 0000000..4962b79 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTTaskCommand.cs" @@ -0,0 +1,81 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks.OHT +{ + public class OHTTaskCommand + { + /// <summary> + /// 蹇冭烦 + /// </summary> + public short W_HeartBeat { get; set; } + + /// <summary> + /// 浠诲姟绫诲瀷 + /// </summary> + public short W_Task_Type { get; set; } + /// <summary> + /// 瑁呰溅灞傛暟 + /// </summary> + public short W_Load_Layer { get; set; } + + /// <summary> + /// 鍙栬揣琛� + /// </summary> + public short W_Pick_Line { get; set; } + + /// <summary> + /// 鍙栬揣鍒� + /// </summary> + public short W_Pick_Column { get; set; } + + /// <summary> + /// 鍙栬揣灞� + /// </summary> + public short W_Pick_Layer { get; set; } + + + /// <summary> + /// 鏀捐揣琛� + /// </summary> + public short W_Put_Line { get; set; } + + /// <summary> + /// 鏀捐揣鍒� + /// </summary> + public short W_Put_Column { get; set; } + + /// <summary> + /// 鏀捐揣灞� + /// </summary> + public short W_Put_Layer { get; set; } + + /// <summary> + /// 1鍙锋槸鍚︽姄鍙� + /// </summary> + public short W_Catch_1 { get; set; } + + /// <summary> + /// 2鍙锋槸鍚︽姄鍙� + /// </summary> + public short W_Catch_2 { get; set; } + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public short W_TaskNumber { get; set; } + + /// <summary> + /// 鏍¢獙鍊� (浠诲姟绫诲瀷+瑁呰溅灞傛暟+鍙栬+鍙栧垪+鍙栧眰+鏀捐+鏀惧垪+鏀惧眰+W_Catch_1+W_Catch_2+浠诲姟鍙�) + /// </summary> + public short W_CheckValue { get; set; } + + /// <summary> + /// 纭淇″彿 + /// </summary> + public int W_ConfirmSignal { get; set; } + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" deleted file mode 100644 index d026f57..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" +++ /dev/null @@ -1,62 +0,0 @@ -锘縰sing Autofac.Core; -using HslCommunication; -using HslCommunication.Core; -using Microsoft.VisualBasic.FileIO; -using Quartz; -using SixLabors.ImageSharp.PixelFormats; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using WIDESEAWCS_Communicator; -using WIDESEAWCS_Core.Helper; -using WIDESEAWCS_ITaskInfoService; -using WIDESEAWCS_QuartzJob; -using WIDESEAWCS_QuartzJob.DeviceBase; -using WIDESEAWCS_QuartzJob.StackerCrane.Enum; - -namespace WIDESEAWCS_Tasks -{ - [DisallowConcurrentExecution] - public class TestJob : JobBase, IJob - { - private readonly ITaskService _taskService; - public TestJob(ITaskService taskService) - { - _taskService = taskService;//娉ㄥ叆 - } - - public Task Execute(IJobExecutionContext context) - { - - bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); - if (flag && value != null) - { - OtherDevice device = (OtherDevice)value; - try - { - //Example - //device.GetValue 璇诲彇 - //device.SetValue 鍐欏叆 - // _taskService.Repository 浠撳偍灞傦紝杩涜鏁版嵁搴撹闂� - - WriteInfo(device.DeviceName, "infoLog"); - - WriteDebug(device.DeviceName, "debugLog"); - } - catch (Exception ex) - { - WriteError(device.DeviceName, "閿欒", ex); - } - } - - - return Task.CompletedTask; - } - } - - -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs" new file mode 100644 index 0000000..4be4e95 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs" @@ -0,0 +1,135 @@ +锘縰sing Autofac.Core; +using HslCommunication; +using HslCommunication.Core; +using HslCommunication.WebSocket; +using Microsoft.Extensions.Hosting; +using Microsoft.VisualBasic.FileIO; +using Newtonsoft.Json; +using Quartz; +using SixLabors.ImageSharp.PixelFormats; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.StackerCrane.Enum; +using WIDESEAWCS_Tasks.OHT; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class ZXJJob : JobBase, IJob + { + private readonly ITaskService _taskService; + WebSocketServer _webSocketServer; + public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer) + { + _taskService = taskService;//娉ㄥ叆 + _webSocketServer = webSocketServer; + } + + public Task Execute(IJobExecutionContext context) + { + + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + try + { + //Example + //device.GetValue 璇诲彇 + //device.SetValue 鍐欏叆 + //_taskService.Repository; //浠撳偍灞傦紝杩涜鏁版嵁搴撹闂� + OHTReadData oHTReadData = new OHTReadData(); + //todo:璇诲彇璁惧鏁版嵁锛� + + + //todo:璁惧鐘舵�佹暟鎹彂閫佺粰鍓嶇 + + + + //WriteInfo(device.DeviceName, "infoLog"); + + //WriteDebug(device.DeviceName, "debugLog"); + } + catch (Exception ex) + { + WriteError(device.DeviceName, "閿欒", ex); + } + } + + + return Task.CompletedTask; + } + + + /// <summary> + /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel + /// </summary> + /// <param name="task">浠诲姟瀹炰綋</param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OHTTaskCommand? ConvertToOHTTaskCommand([NotNull] Dt_Task task) + { + OHTTaskCommand oHtTaskCommand = new OHTTaskCommand(); + + oHtTaskCommand.W_Task_Type = 1; + oHtTaskCommand.W_Load_Layer = 0; + oHtTaskCommand.W_Pick_Line = 1; + + string[] SourceCodes = task.SourceAddress.Split("-"); + if (SourceCodes.Length == 3) + { + oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(SourceCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�"); + return null; + } + string[] targetCodes = task.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + oHtTaskCommand.W_Put_Line = Convert.ToInt16(targetCodes[1]); + oHtTaskCommand.W_Put_Column = Convert.ToInt16(targetCodes[2]); + oHtTaskCommand.W_Put_Layer = Convert.ToInt16(targetCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟鐩爣鍦板潃閰嶇疆閿欒"); + return null; + } + return oHtTaskCommand; + } + + + /// <summary> + /// 鑾峰彇浠诲姟 + /// </summary> + /// <returns></returns> + private Dt_Task? GetTask() + { + Dt_Task task; + task = _taskService.QueryStackerCraneTask("R01"); + return task; + } + + + } + + +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" index 8aa16a2..38f3e7f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" @@ -1,8 +1,12 @@ 锘� +using WIDESEAWCS_Common.LocationEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_Core.Utilities; +using WIDESEAWCS_DTO.BasicInfo; using WIDESEAWCS_IWMSPart; using WIDESEAWCS_Model.Models; @@ -84,6 +88,53 @@ } } + public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO) + { + try + { + (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO); + if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2); + + int side = 1; + List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + for (int i = 0; i < initializationLocationDTO.MaxRow; i++) + { + for (int j = 0; j < initializationLocationDTO.MaxColumn; j++) + { + for (int k = 0; k < initializationLocationDTO.MaxLayer; k++) + { + Dt_LocationInfo locationInfo = new Dt_LocationInfo() + { + Column = j + 1, + EnableStatus = EnableStatusEnum.Normal.ObjToInt(), + Layer = k + 1, + LocationStatus = LocationStatusEnum.Free.ObjToInt(), + LocationType = LocationTypeEnum.Cube.ObjToInt(), + RoadwayNo = initializationLocationDTO.Roadway, + Row = i + 1, + }; + + + locationInfo.Depth = 1; + locationInfo.LocationCode = $"{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}"; + locationInfo.LocationName = $"{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞�"; + + + + locationInfos.Add(locationInfo); + } + } + } + + BaseDal.AddData(locationInfos); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + } public class LocationConfig -- Gitblit v1.9.3