1
qinchulong
2025-03-02 5729bfa51a9e8a4781755233324d7e9d002295c0
1

1
已修改12个文件
已添加6个文件
692 ■■■■ 文件已修改
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/Idt_StationinfoService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/dt_batchInfo.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/dt_stationInfo.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_hty.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/WMSPart/Dt_StockInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/StationInfoController.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/dt_stationinfoService.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/~$机组通信协议.doc 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/电控机组通信协议.doc 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -3,20 +3,28 @@
  "WorkspaceRootPath": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|f:\\git\u9879\u76EE\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohtjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|f:\\git\u9879\u76EE\\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:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|f:\\git\u9879\u76EE\\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|F:\\Git\u9879\u76EE\\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:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|f:\\git\u9879\u76EE\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_systemservices\\dt_errormsginfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\dt_errormsginfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|f:\\git\u9879\u76EE\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\taskenum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|f:\\git\u9879\u76EE\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_isystemservices\\idt_errormsginfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|solutionrelative:wideseawcs_isystemservices\\idt_errormsginfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|f:\\git\u9879\u76EE\\yangjipingku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|f:\\git\u9879\u76EE\\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:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_model\\models\\system\\dt_stationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\system\\dt_stationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -26,58 +34,84 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 2,
          "SelectedChildIndex": 3,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "Idt_ErrormsginfoService.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\Idt_ErrormsginfoService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\Idt_ErrormsginfoService.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\Idt_ErrormsginfoService.cs",
              "RelativeToolTip": "WIDESEAWCS_ISystemServices\\Idt_ErrormsginfoService.cs",
              "ViewState": "AQIAAAIAAAAAAAAAAAAhwBIAAAApAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-01T15:00:45.004Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "dt_errormsginfoService.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\dt_errormsginfoService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\dt_errormsginfoService.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\dt_errormsginfoService.cs",
              "RelativeToolTip": "WIDESEAWCS_SystemServices\\dt_errormsginfoService.cs",
              "ViewState": "AQIAABUAAAAAAAAAAIA8wCcAAAAIAAAA",
              "Title": "TaskService.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ViewState": "AQIAADUCAAAAAAAAAADgv0UCAABCAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-01T14:52:04.164Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "OHTJob.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "ViewState": "AQIAACMAAAAAAAAAAAAuwCwAAAA5AAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-01T14:47:49.318Z",
              "WhenOpened": "2025-03-02T07:53:59.024Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "ZXJJob.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\ZXJ\\ZXJJob.cs",
              "ViewState": "AQIAACUAAAAAAAAAAAAUwD4AAABAAAAA",
              "Title": "TaskStatusEnum.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskStatusEnum.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskStatusEnum.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskStatusEnum.cs",
              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskStatusEnum.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAADwvwkAAAAgAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-01T14:43:53.644Z",
              "WhenOpened": "2025-03-02T07:50:10.929Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "TaskTypeEnum.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAADwvwkAAAAjAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-02T07:49:15.488Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "GZJJob.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs",
              "ViewState": "AQIAAGYAAAAAAAAAAAAYwHMAAAAZAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-02T07:23:03.899Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "dt_stationInfo.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\dt_stationInfo.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\dt_stationInfo.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\dt_stationInfo.cs",
              "RelativeToolTip": "WIDESEAWCS_Model\\Models\\System\\dt_stationInfo.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAAjAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-02T07:08:19.45Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "OHTJob.cs",
              "DocumentMoniker": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "ToolTip": "F:\\Git\u9879\u76EE\\YangJiPingKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "ViewState": "AQIAABsAAAAAAAAAAAAtwIYAAAAdAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-03-01T14:47:49.318Z",
              "EditorCaption": ""
            }
          ]
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -120,4 +120,19 @@
        [Description("出库任务异常")]
        OutException = 199,
    }
    public enum MateTypeEnum
    {
        /// <summary>
        /// è‡ªäº§
        /// </summary>
        [Description("自产")]
        ZiChan,
        /// <summary>
        /// å¤–è´­
        /// </summary>
        [Description("外购")]
        WaiGou,
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/Idt_StationinfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_ISystemServices
{
    public interface Idt_StationinfoService : IService<dt_stationInfo>
    {
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/dt_batchInfo.cs
@@ -25,5 +25,11 @@
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "批次号")]
        public string Batch { get; set; }
        /// <summary>
        /// ç‰©æ–™ä¿¡æ¯ï¼Œè‡ªäº§æˆ–外购
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "物料信息,自产或外购")]
        public int materType { get; set; }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/dt_stationInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.DB.Models;
namespace WIDESEAWCS_Model.Models
{
    public class dt_stationInfo : BaseEntity
    {
        /// <summary>
        /// ä¸»é”®
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        /// <summary>
        /// è¡Œ
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "行")]
        public int Row { get; set; }
        /// <summary>
        /// åˆ—
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "行")]
        public int Column { get; set; }
        /// <summary>
        /// æè¿°ä¿¡æ¯
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "描述信息")]
        public string msg { get; set; }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -146,7 +146,7 @@
        /// </summary>
        [ImporterHeader(Name = "备注")]
        [ExporterHeader(DisplayName = "备注")]
        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "备注")]
        public string Remark { get; set; }
        [SugarColumn(IsNullable = true,  ColumnDescription = "备注")]
        public int Remark { get; set; }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_hty.cs
@@ -146,7 +146,7 @@
        /// </summary>
        [ImporterHeader(Name = "备注")]
        [ExporterHeader(DisplayName = "备注")]
        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "备注")]
        public string Remark { get; set; }
        [SugarColumn(IsNullable = true,  ColumnDescription = "备注")]
        public int Remark { get; set; }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/WMSPart/Dt_StockInfo.cs
@@ -54,7 +54,7 @@
        /// å¤‡æ³¨
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "备注")]
        public string Remark { get; set; }
        public int Remark { get; set; }
        /// <summary>
        /// åº“存明细
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/StationInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using Microsoft.AspNetCore.Mvc;
using WIDESEAWCS_Core.BaseController;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_Server.Controllers.System
{
    [Route("api/Station")]
    [ApiController]
    public class StationInfoController : ApiBaseController<Idt_StationinfoService, dt_stationInfo>
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public StationInfoController(Idt_StationinfoService service, IHttpContextAccessor httpContextAccessor) : base(service)
        {
            _httpContextAccessor = httpContextAccessor;
        }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/dt_stationinfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_SystemServices
{
    public class dt_stationinfoService : ServiceBase<dt_stationInfo, IRepository<dt_stationInfo>>, Idt_StationinfoService
    {
        private readonly IMapper _mapper;
        /// <summary>
        /// ä»“储层(数据库访问)
        /// </summary>
        public IRepository<dt_stationInfo> Repository => BaseDal;
        public dt_stationinfoService(IRepository<dt_stationInfo> BaseDal, IMapper mapper) : base(BaseDal)
        {
            _mapper = mapper;
        }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -259,7 +259,7 @@
                }
                if (workTpe.Equals("In"))
                {
                    task = BaseDal.QueryData(v=>v.TaskType==(int)TaskInboundTypeEnum.Inbound && v.TaskState==(int)TaskInStatusEnum.InNew).OrderBy(v=>v.CreateDate).First();
                    task = BaseDal.QueryData(v=>v.TaskType==(int)TaskInboundTypeEnum.Inbound && v.TaskState==(int)TaskInStatusEnum.InNew).OrderByDescending(v=>v.Grade) .OrderBy(v=>v.CreateDate).First();
                }
                else if (workTpe.Equals("Out"))
                {
@@ -579,6 +579,14 @@
                    stock.Weight = (decimal)weight;
                    stock.StockStatus = (int)stockEnum.Lock;
                    stock.BatchNo = batck.Batch;
                    if (nawtask.Remark== (int)MateTypeEnum.ZiChan)
                    {
                        stock.Remark = (int)MateTypeEnum.ZiChan;
                    }
                    else
                    {
                        stock.Remark = (int)MateTypeEnum.WaiGou;
                    }
                    //修改货位信息
                    var location = _locationRepository.QueryFirst(v=>v.LocationCode==nawtask.TargetAddress);
                    location.LocationStatus = (int)LocationStatusEnum.InStock;
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs
@@ -15,8 +15,11 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -30,11 +33,21 @@
    public class GZJJob : JobBase, IJob
    {
        private readonly ITaskService _taskService;
        private readonly Idt_ErrormsginfoService _ErrormsginfoService;
        private readonly IRepository<dt_stationInfo> _dt_stationInfoRepository;
        private readonly IRepository<Dt_Task> _dt_taskRepositiry;
        WebSocketServer _webSocketServer;
        public GZJJob(ITaskService taskService, WebSocketServer webSocketServer)
        public GZJJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService,
            Idt_StationinfoService stationinfoService,
            IRepository<dt_stationInfo> dt_stationInfoRepository,
            IRepository<Dt_Task> dt_taskRepositiry)
        {
            _taskService = taskService;//注入
            _webSocketServer = webSocketServer;
            _ErrormsginfoService = errormsginfoService;
            _dt_stationInfoRepository = dt_stationInfoRepository;
            _dt_taskRepositiry = dt_taskRepositiry;
        }
        public Task Execute(IJobExecutionContext context)
@@ -46,25 +59,80 @@
                OtherDevice device = (OtherDevice)value;
                try
                {
                    //Example
                    //device.GetValue  è¯»å–
                    //device.SetValue  å†™å…¥
                    //_taskService.Repository; //仓储层,进行数据库访问
                    OHTReadData oHTReadData = new OHTReadData();
                    //todo:读取设备数据,
                    //todo:设备状态数据发送给前端
                    #region ç”Ÿæˆå…¥åº“任务
                    if (!OHTJob.oHTReadData.R_GZJ_isWork)
                    {
                        throw new Exception($"规整机投入使用信号为false");
                    }
                    Dt_Task task = new Dt_Task();
                    
                    //WriteInfo(device.DeviceName, "infoLog");
                    if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_DK_isready)//RGV上料模式,且东跨架子有上料信号
                    {
                        var station=_dt_stationInfoRepository.QueryFirst(v=>v.msg== "东跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        task.Grade = 1;
                        task.Remark = (int)MateTypeEnum.ZiChan;
                    }
                    else if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_XK_isready)//RGV上料模式,且西跨架子有上料信号
                    {
                        var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        var DKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                        string address= DKstation.Row + "-" + DKstation.Column + "-1";
                        var oldtask = _dt_taskRepositiry.QueryFirst(v=>v.SourceAddress== address);
                        if (oldtask!=null && oldtask.TaskState== (int)TaskInStatusEnum.InNew)
                        {
                            task.Grade = 2;
                        }
                        else
                        {
                            task.Grade = 1;
                        }
                        task.Remark = (int)MateTypeEnum.ZiChan;
                    }
                    else if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_XK_isready)//人工叉车上料模式,且西跨架子有上料信号
                    {
                        var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        task.Grade = 1;
                        task.Remark = (int)MateTypeEnum.WaiGou;
                    }
                    else if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_DK_isready)//人工叉车上料模式,且东跨架子有上料信号
                    {
                        var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        var XKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                        string address= XKstation.Row + "-" + XKstation.Column + "-1";
                        var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                        if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                        {
                            task.Grade = 2;
                        }
                        else
                        {
                            task.Grade = 1;
                        }
                        task.Remark = (int)MateTypeEnum.WaiGou;
                    }
                    else
                    {
                        throw new Exception($"规整机当前信号不满足入库任务生成条件");
                    }
                    task.Roadway = "TC01";
                    task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                    task.TaskState = (int)TaskInStatusEnum.InNew;
                    //WriteDebug(device.DeviceName, "debugLog");
                    _dt_taskRepositiry.AddData(task);
                    #endregion
                }
                catch (Exception ex)
                {
                    WriteError(device.DeviceName, "错误", ex);
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 2);
                }
            }
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTEnum.cs
@@ -210,4 +210,102 @@
        #endregion
    }
    public enum ZXJDBName
    {
        /// <summary>
        /// å¿ƒè·³
        /// </summary>
        [Description("心跳")]
        R_ZXJ_HeartBeat,
        /// <summary>
        /// æ•´å½¢æœºæŠ•入使用
        /// </summary>
        [Description("整形机投入使用")]
        R_ZXJ_isWork,
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è½¨é“车
        /// </summary>
        [Description("上料模式轨道车")]
        R_ZXJ_RGVMode,
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è¡Œè½¦
        /// </summary>
        [Description("上料模式行车")]
        R_ZXJ_TCMode,
        /// <summary>
        /// å‰”除未可取板
        /// </summary>
        [Description("剔除未可取板")]
        R_ZXJ_TC_isready,
        /// <summary>
        /// å‰”除模式行车
        /// </summary>
        [Description("剔除模式行车")]
        R_TCMode_TC,
        /// <summary>
        /// å‰”除模式叉车
        /// </summary>
        [Description("剔除模式叉车")]
        R_TCMode_CC,
        /// <summary>
        /// è¡Œè½¦å¯å‡†å¤‡å–板
        /// </summary>
        [Description("行车可准备取板")]
        R_HC_isReady,
        /// <summary>
        /// è¡Œè½¦å¯æ”¾æ¿
        /// </summary>
        [Description("行车可放板")]
        R_HC_isReadyWork,
        /// <summary>
        /// è¿›æ–™å°è½¦å®‰å…¨ä½
        /// </summary>
        [Description("进料小车安全位")]
        R_issafe,
    }
    public enum GZJDBName
    {
        /// <summary>
        /// è¯»è„‰å†²å¿ƒè·³
        /// </summary>
        [Description("读脉冲心跳")]
        R_GZJ_HeartBeat,
        /// <summary>
        /// è§„整机投入使用
        /// </summary>
        [Description("规整机投入使用")]
        R_GZJ_isWork,
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è½¨é“车
        /// </summary>
        [Description("上料模式轨道车")]
        R_RGVMode,
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼å‰è½¦
        /// </summary>
        [Description("上料模式叉车")]
        R_CCMode,
        /// <summary>
        /// å‰”除上料模式
        /// </summary>
        [Description("剔除上料模式")]
        R_TCMode,
        /// <summary>
        /// ä¸œè·¨æž¶å­å¯å–板
        /// </summary>
        [Description("东跨架子可取板")]
        R_DK_isready,
        /// <summary>
        /// è¥¿è·¨æž¶å­å¯å–板
        /// </summary>
        [Description("西跨架子可取板")]
        R_XK_isready,
        /// <summary>
        /// å‰”除架子可取板
        /// </summary>
        [Description("剔除架子可取板")]
        R_TC_isready,
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs
@@ -33,6 +33,7 @@
    public class OHTJob : JobBase, IJob
    {
        public static string InorOut = "In";
        public static OHTReadData oHTReadData = new OHTReadData();
        private readonly ITaskService _taskService;
        private readonly Idt_ErrormsginfoService _ErrormsginfoService;
        WebSocketServer _webSocketServer;
@@ -48,54 +49,18 @@
            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
            if (flag && value != null)
            {
                var ohdevice =Storage.Devices.Find(v=>v.DeviceName== "阳极整形机");
                //天车PLC对象
                OtherDevice device = (OtherDevice)value;
                //整形机PLC对象
                var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "阳极整形机");
                //规整机PLC对象
                var GZJevice = Storage.Devices.Find(v => v.DeviceName == "阳极规整机");
                if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
                {
                    return Task.CompletedTask;
                }
                try
                {
                    //Example
                    //device.GetValue  è¯»å–
                    //device.SetValue  å†™å…¥
                    //_taskService.Repository; //仓储层,进行数据库访问
                    OHTReadData oHTReadData = new OHTReadData();
                    #region è¯»å–天车设备数据
                    oHTReadData.R_HeartBeat = device.GetValue<DeviceDBName, bool>(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, int>(DeviceDBName.R_CurrentLine);
                    oHTReadData.R_CurrentColumn = device.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentColumn);
                    oHTReadData.R_RiseUp_Position = device.GetValue<DeviceDBName, int>(DeviceDBName.R_RiseUp_Position);
                    oHTReadData.R_TaskNumber = device.GetValue<DeviceDBName, int>(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.weight = device.GetValue<DeviceDBName, float>(DeviceDBName.weight);
                    #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);
                    #region å¤©è½¦å®Œæˆä»»åŠ¡é€»è¾‘
                    //因为天的任务需要分段发送,所以取货完成与放货完成需要单独做逻辑控制
                    //判断天车当前有没有取货完成任务信号
@@ -186,7 +151,6 @@
                catch (Exception ex)
                {
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message,1);
                    //WriteError(device.DeviceName, "错误", ex);
                }
            }
            return Task.CompletedTask;
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTReadData.cs
@@ -64,10 +64,88 @@
        public short R_Loaded_2 { get; set; }
        /// <summary>
        /// 1号货爪扫码结果
        /// é‡é‡
        /// </summary>
        public float weight { get; set; }
        #region è§„整机PLC定义
        /// <summary>
        /// è¯»è„‰å†²å¿ƒè·³
        /// </summary>
        public bool R_GZJ_HeartBeat { get; set; }
        /// <summary>
        /// è§„整机投入使用
        /// </summary>
        public bool R_GZJ_isWork { get; set; }
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è½¨é“车
        /// </summary>
        public bool R_RGVMode { get; set; }
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼å‰è½¦
        /// </summary>
        public bool R_CCMode { get; set; }
        /// <summary>
        /// å‰”除上料模式
        /// </summary>
        public bool R_TCMode { get; set; }
        /// <summary>
        /// ä¸œè·¨æž¶å­å¯å–板
        /// </summary>
        public bool R_DK_isready { get; set; }
        /// <summary>
        /// è¥¿è·¨æž¶å­å¯å–板
        /// </summary>
        public bool R_XK_isready { get; set; }
        /// <summary>
        /// å‰”除架子可取板
        /// </summary>
        public bool R_TC_isready { get; set; }
        #endregion
        #region æ•´å½¢æœºPLC定义
        /// <summary>
        /// è¯»è„‰å†²ä¿¡å·
        /// </summary>
        public bool R_ZXJ_HeartBeat { get; set; }
        /// <summary>
        /// æ•´å½¢æœºæŠ•入使用
        /// </summary>
        public bool R_ZXJ_isWork { get; set; }
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è½¨é“车
        /// </summary>
        public bool R_ZXJ_RGVMode { get; set; }
        /// <summary>
        /// ä¸Šæ–™æ¨¡å¼è¡Œè½¦
        /// </summary>
        public bool R_ZXJ_TCMode { get; set; }
        /// <summary>
        /// å‰”除未可取板
        /// </summary>
        public bool R_ZXJ_TC_isready { get; set; }
        /// <summary>
        /// å‰”除模式行车
        /// </summary>
        public bool R_TCMode_TC { get; set; }
        /// <summary>
        /// å‰”除模式叉车
        /// </summary>
        public bool R_TCMode_CC { get; set; }
        /// <summary>
        /// è¡Œè½¦å¯å‡†å¤‡å–板
        /// </summary>
        public bool R_HC_isReady { get; set; }
        /// <summary>
        /// è¡Œè½¦å¯æ”¾æ¿
        /// </summary>
        public bool R_HC_isReadyWork { get; set; }
        /// <summary>
        /// è¿›æ–™å°è½¦å®‰å…¨ä½
        /// </summary>
        public bool R_issafe { get; set; }
        #endregion
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs
@@ -17,6 +17,7 @@
using System.Threading.Tasks;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -31,10 +32,12 @@
    {
        private readonly ITaskService _taskService;
        WebSocketServer _webSocketServer;
        public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer)
        private readonly Idt_ErrormsginfoService _ErrormsginfoService;
        public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer,Idt_ErrormsginfoService errormsginfoService)
        {
            _taskService = taskService;//注入
            _webSocketServer = webSocketServer;
            _ErrormsginfoService = errormsginfoService;
        }
        public Task Execute(IJobExecutionContext context)
@@ -43,32 +46,84 @@
            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");
                    //天车PLC对象
                    OtherDevice TCevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "天车");
                    if (TCevice.Communicator.IsConnected)
                    {
                        #region è¯»å–天车设备数据
                        OHTJob.oHTReadData.R_HeartBeat = TCevice.GetValue<DeviceDBName, bool>(DeviceDBName.R_HeartBeat);
                        OHTJob.oHTReadData.R_RunMode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunMode);
                        OHTJob.oHTReadData.R_RunState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunState);
                        OHTJob.oHTReadData.R_AlarmCode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_AlarmCode);
                        OHTJob.oHTReadData.R_TaskState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
                        OHTJob.oHTReadData.R_CurrentLine = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentLine);
                        OHTJob.oHTReadData.R_CurrentColumn = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentColumn);
                        OHTJob.oHTReadData.R_RiseUp_Position = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_RiseUp_Position);
                        OHTJob.oHTReadData.R_TaskNumber = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_TaskNumber);
                        OHTJob.oHTReadData.R_Loaded_1 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_1);
                        OHTJob.oHTReadData.R_Loaded_2 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_2);
                        OHTJob.oHTReadData.weight = TCevice.GetValue<DeviceDBName, float>(DeviceDBName.weight);
                        #endregion
                    }
                    else
                    {
                        throw new Exception($"天车PLC连接失败");
                    }
                    //整形机PLC对象
                    OtherDevice device = (OtherDevice)value;
                    if (device.Communicator.IsConnected)
                    {
                        #region è¯»å–整形机设备数据
                        OHTJob.oHTReadData.R_ZXJ_HeartBeat = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_HeartBeat);
                        OHTJob.oHTReadData.R_ZXJ_isWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_isWork);
                        OHTJob.oHTReadData.R_ZXJ_RGVMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_RGVMode);
                        OHTJob.oHTReadData.R_ZXJ_TCMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TCMode);
                        OHTJob.oHTReadData.R_ZXJ_TC_isready = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TC_isready);
                        OHTJob.oHTReadData.R_TCMode_TC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_TC);
                        OHTJob.oHTReadData.R_TCMode_CC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_CC);
                        OHTJob.oHTReadData.R_HC_isReady = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReady);
                        OHTJob.oHTReadData.R_HC_isReadyWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReadyWork);
                        OHTJob.oHTReadData.R_issafe = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_issafe);
                        #endregion
                    }
                    else
                    {
                        throw new Exception($"整形机PLC连接失败");
                    }
                    //规整机PLC对象
                    OtherDevice GZJevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "阳极规整机");
                    if (GZJevice.Communicator.IsConnected)
                    {
                        #region è¯»å–规整机设备数据
                        OHTJob.oHTReadData.R_ZXJ_HeartBeat = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_HeartBeat);
                        OHTJob.oHTReadData.R_GZJ_isWork = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_isWork);
                        OHTJob.oHTReadData.R_RGVMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_RGVMode);
                        OHTJob.oHTReadData.R_CCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_CCMode);
                        OHTJob.oHTReadData.R_TCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TCMode);
                        OHTJob.oHTReadData.R_DK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_DK_isready);
                        OHTJob.oHTReadData.R_XK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_XK_isready);
                        OHTJob.oHTReadData.R_TC_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TC_isready);
                        #endregion
                    }
                    else
                    {
                        throw new Exception($"规整机PLC连接失败");
                    }
                    //状态数据发送给前端
                    string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData);
                    _webSocketServer.PublishAllClientPayload(ohtData);
                }
                catch (Exception ex)
                {
                    WriteError(device.DeviceName, "错误", ex);
                    //状态数据发送给前端
                    string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData);
                    _webSocketServer.PublishAllClientPayload(ohtData);
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1);
                }
            }
            return Task.CompletedTask;
        }
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/~$»ú×éͨÐÅЭÒé.doc
Binary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/µç¿Ø»ú×éͨÐÅЭÒé.doc
Binary files differ