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