zhuhao 3 жил өмнө
parent
commit
84fbeaf292
28 өөрчлөгдсөн 1056 нэмэгдсэн , 660 устгасан
  1. 1 130
      IMCS_CCS/Entitys/CcsAction.cs
  2. 53 0
      IMCS_CCS/Entitys/CcsActionAddress.cs
  3. 2 1
      IMCS_CCS/Entitys/Device.cs
  4. 32 3
      IMCS_CCS/Entitys/TaskCallback.cs
  5. 13 8
      IMCS_CCS/IMCS.CCS.xml
  6. 40 0
      IMCS_CCS/Model/vo/RequestHeidhData.cs
  7. 3 1
      IMCS_CCS/Model/vo/ResponseFanucData.cs
  8. 2 6
      IMCS_CCS/Model/vo/ResponseToolData.cs
  9. 69 0
      IMCS_CCS/Repository/CcsActionAddressRepository.cs
  10. 7 2
      IMCS_CCS/Repository/CcsActionRepository.cs
  11. 3 1
      IMCS_CCS/Repository/CcsContext.cs
  12. 23 0
      IMCS_CCS/Repository/ICcsActionAddressRepository.cs
  13. 22 0
      IMCS_CCS/Service/ICcsActionAddressService.cs
  14. 40 0
      IMCS_CCS/Service/Impl/CcsActionAddressService.cs
  15. 341 328
      IMCS_CCS/Service/Impl/HttpRequestService.cs
  16. 369 159
      IMCS_CCS/Service/Impl/TaskJobService.cs
  17. 2 0
      IMCS_CCS/Startup.cs
  18. 9 5
      IMCS_CCS/appsettings.json
  19. 13 8
      IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS.CCS.xml
  20. BIN
      IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.dll
  21. BIN
      IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.pdb
  22. 9 5
      IMCS_CCS/bin/Debug/netcoreapp3.1/appsettings.json
  23. 1 1
      IMCS_CCS/bin/Debug/netcoreapp3.1/wwwroot/db/Tasks.json
  24. BIN
      IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.AssemblyReference.cache
  25. 1 1
      IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.CoreCompileInputs.cache
  26. BIN
      IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.dll
  27. BIN
      IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.pdb
  28. 1 1
      IMCS_CCS/wwwroot/db/Tasks.json

+ 1 - 130
IMCS_CCS/Entitys/CcsAction.cs

@@ -23,136 +23,7 @@ namespace IMCS.CCS.Entitys
         public string OperateType { get; set; }
 
         [Column("operate_name")] 
-        public string OperateName { get; set; }
-         
-        [Column("address")] 
-        public string Address { get; set; } 
-       
-        [Column("address2")]
-        public string Address2 { get; set; }
-
-        [Column("address3")]
-        public string Address3 { get; set; }
-
-        [Column("address4")]
-        public string Address4 { get; set; }
-
-        [Column("address5")]
-        public string Address5 { get; set; }
-
-        [Column("address6")]
-        public string Address6 { get; set; }
-
-        [Column("address7")]
-        public string Address7 { get; set; }
-
-        [Column("address8")]
-        public string Address8 { get; set; }
-
-        [Column("address9")]
-        public string Address9 { get; set; }
-
-        [Column("address10")]
-        public string Address10 { get; set; }
-
-        [Column("address11")]
-        public string Address11 { get; set; }
-
-        [Column("address12")]
-        public string Address12 { get; set; }
-
-        [Column("check_address")]
-        public string CheckAddress { get; set; } 
-
-        [Column("check_address2")]
-        public string CheckAddress2 { get; set; }
-
-        [Column("check_address3")]
-        public string CheckAddress3 { get; set; }
-
-        [Column("check_address4")]
-        public string CheckAddress4 { get; set; }
-
-        [Column("check_address5")]
-        public string CheckAddress5 { get; set; }
-
-        [Column("check_address6")]
-        public string CheckAddress6 { get; set; }
-
-        [Column("check_value")]
-        public string CheckValue { get; set; } 
-
-        [Column("check_value2")]
-        public string CheckValue2 { get; set; }
-
-        [Column("check_value3")]
-        public string CheckValue3 { get; set; }
-
-        [Column("check_value4")]
-        public string CheckValue4 { get; set; }
-
-        [Column("check_value5")]
-        public string CheckValue5 { get; set; }
-
-        [Column("check_value6")]
-        public string CheckValue6 { get; set; }
-
-        [Column("check_value7")]
-        public string CheckValue7 { get; set; }
-
-        [Column("check_type")]
-        public bool CheckType { get; set; }
-
-        [Column("check_type2")]
-        public bool CheckType2 { get; set; }
-
-        [Column("check_type3")]
-        public bool CheckType3 { get; set; }
-
-        [Column("check_type4")]
-        public bool CheckType4 { get; set; }
-
-        [Column("check_type5")]
-        public bool CheckType5 { get; set; }
-
-        [Column("check_type6")]
-        public bool CheckType6 { get; set; }
-
-        [Column("callback_address")]
-        public string CallbackAddress { get; set; }
-
-        [Column("callback_address2")]
-        public string CallbackAddress2 { get; set; }
-
-        [Column("callback_address3")]
-        public string CallbackAddress3 { get; set; }
-
-        [Column("callback_address4")]
-        public string CallbackAddress4 { get; set; }
-
-        [Column("callback_address5")]
-        public string CallbackAddress5 { get; set; }
-
-        [Column("callback_address6")]
-        public string CallbackAddress6 { get; set; }
-
-        [Column("callback_value")]
-        public string CallbackValue { get; set; }
-
-        [Column("callback_value2")]
-        public string CallbackValue2 { get; set; }
-
-        [Column("callback_value3")]
-        public string CallbackValue3 { get; set; }
-
-        [Column("callback_value4")]
-        public string CallbackValue4 { get; set; }
-
-        [Column("callback_value5")]
-        public string CallbackValue5 { get; set; }
-
-        [Column("callback_value6")]
-        public string CallbackValue6 { get; set; }
+        public string OperateName { get; set; } 
 
         [Column("file_path")]
         public string FilePath { get; set; }

+ 53 - 0
IMCS_CCS/Entitys/CcsActionAddress.cs

@@ -0,0 +1,53 @@
+using IMCS_CCS.Utils;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+ 
+
+namespace IMCS.CCS.Entitys
+{
+    [Table("ccs_action_address")]
+    public class CcsActionAddress
+    {
+        [Key]
+        [Column("id")]
+        [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
+        public int Id { get; set; }
+
+        [Column("action_id")] 
+        public int ActionId { get; set; }
+
+        [Column("type")]
+        public string Type { get; set; }
+
+        [Column("address")] 
+        public string Address { get; set; }
+
+        [Column("value")] 
+        public string Value { get; set; }
+         
+        [Column("check_type")] 
+        public bool CheckType { get; set; } 
+       
+        [Column("sort")]
+        public int Sort { get; set; } 
+    }
+
+    /// <summary>
+    /// 动作地址类型
+    /// </summary>
+    public enum ActionAddressTypeEnum
+    {
+        [EnumDescription("写入")] 
+        WRITE,
+        [EnumDescription("校验")]
+        CHECK,
+        [EnumDescription("回调")]
+        CALLBACK,
+        [EnumDescription("失败回调")]
+        CALLBACK_FAIL,
+        [EnumDescription("回调复位")]
+        RESET,
+    }
+
+    
+}

+ 2 - 1
IMCS_CCS/Entitys/Device.cs

@@ -50,6 +50,7 @@ namespace IMCS.CCS.Entitys
         S7_400,
         S7_300,
         FTP,
-        FANUC
+        FANUC,
+        HEIDEHAIN
     }
 }

+ 32 - 3
IMCS_CCS/Entitys/TaskCallback.cs

@@ -39,6 +39,27 @@ namespace IMCS.CCS.Entitys
         [Column("address3")]
         public string Address3 { get; set; }
 
+        [Column("fail_address")]
+        public string FailAddress { get; set; }
+
+        [Column("fail_address2")]
+        public string FailAddress2 { get; set; }
+
+        [Column("fail_address3")]
+        public string FailAddress3 { get; set; }
+
+        [Column("success_reset_address")]
+        public string SuccessResetAddress { get; set; }
+
+        [Column("success_reset_address2")]
+        public string SuccessResetAddress2 { get; set; }
+
+        [Column("success_reset_value")]
+        public string SuccessResetValue { get; set; }
+
+        [Column("success_reset_value2")]
+        public string SuccessResetValue2 { get; set; }
+
         [Column("operate_type")]
         public string OperateType { get; set; }
 
@@ -54,6 +75,15 @@ namespace IMCS.CCS.Entitys
         [Column("callback_value3")]
         public string CallbackValue3 { get; set; }
 
+        [Column("callback_fail_value")]
+        public string CallbackFailValue { get; set; }
+
+        [Column("callback_fail_value2")]
+        public string CallbackFailValue2 { get; set; }
+
+        [Column("callback_fail_value3")]
+        public string CallbackFailValue3 { get; set; }
+
         [Column("state")]
         public bool State { get; set; }
 
@@ -66,7 +96,8 @@ namespace IMCS.CCS.Entitys
         [Column("description")]
         public string Description { get; set; }
 
-        public TaskCallback(string IP, string OperateType, string OperateName, string TaskId, string TaskNodeId, string Address, string CallbackValue)
+       
+        public TaskCallback(string IP, string OperateType, string OperateName, string TaskId, string TaskNodeId)
         {
             this.TaskNodeId = TaskNodeId;
             this.OperateType = OperateType;
@@ -74,8 +105,6 @@ namespace IMCS.CCS.Entitys
             this.IP = IP;
             this.Port = Port;
             this.TaskId = TaskId;
-            this.Address = Address; 
-            this.CallbackValue = CallbackValue; 
         }
         public TaskCallback()
         {

+ 13 - 8
IMCS_CCS/IMCS.CCS.xml

@@ -596,6 +596,11 @@
             动作名称
             </summary>
         </member>
+        <member name="T:IMCS.CCS.Entitys.ActionAddressTypeEnum">
+            <summary>
+            动作地址类型
+            </summary>
+        </member>
         <member name="P:IMCS.CCS.Entitys.CcsTagValue.Address">
             <summary>
             address
@@ -921,12 +926,7 @@
             主轴负载
             </summary>
         </member>
-        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.monitorType">
-            <summary>
-            监控类型
-            </summary>
-        </member>
-        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.toolNo">
+        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.number">
             <summary>
             刀具号
             </summary>
@@ -1336,7 +1336,7 @@
         </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob2">
             <summary>
-            柔性产线,伺服回调任务
+            柔性产线,伺服等取和放回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -1348,7 +1348,7 @@
         </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob4">
             <summary>
-            启动机床程序,智能单元及质量中心取放回调任务
+            启动机床程序回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -2000,6 +2000,11 @@
             SCP获取文件
             </summary> 
         </member>
+        <member name="T:IMCS_CCS.Model.vo.HeidnActionTypeEnum">
+            <summary>
+            类型名称
+            </summary>
+        </member>
         <member name="T:IMCS_CCS.Model.vo.OpcUaActionTypeEnum">
             <summary>
             类型名称

+ 40 - 0
IMCS_CCS/Model/vo/RequestHeidhData.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace IMCS_CCS.Model.vo
+{
+    public class RequestHeidhData
+    {
+        public string MachineName
+        { get; set; }
+
+        public string ServerUrl
+        { get; set; }
+
+        public string Path
+        { get; set; }
+
+        public string Address
+        { get; set; }
+
+        public string Value
+        { get; set; }
+
+        public string Type
+        { get; set; }
+    }
+
+    /// <summary>
+    /// 类型名称
+    /// </summary>
+    public enum HeidnActionTypeEnum
+    {
+        Connect,
+        Write,
+        Read,
+        Upload, 
+        StartNcProgram
+    }
+}

+ 3 - 1
IMCS_CCS/Model/vo/ResponseFanucData.cs

@@ -67,6 +67,8 @@ namespace IMCS_CCS.Model.vo
     {
         MainProg,
         Status,
-        PowerOnTime
+        PowerOnTime,
+        ActSpindle,
+        AccumulateCuttingTime
     }
 }

+ 2 - 6
IMCS_CCS/Model/vo/ResponseToolData.cs

@@ -7,15 +7,11 @@ namespace IMCS.CCS.Models.vo
 {
     public class ResponseToolData
     {
-        /// <summary>
-        /// 监控类型
-        /// </summary>
-        public string monitorType { get; set; }
-
+        
         /// <summary>
         /// 刀具号
         /// </summary>
-        public string toolNo { get; set; }
+        public string number { get; set; }
 
         /// <summary>
         /// 刀具名称

+ 69 - 0
IMCS_CCS/Repository/CcsActionAddressRepository.cs

@@ -0,0 +1,69 @@
+
+using IMCS.CCS.Entitys; 
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace IMCS.CCS.Repository
+{
+    public class CcsActionAddressRepository : ICcsActionAddressRepository
+    {
+        private readonly CcsContext _context;
+
+        public CcsActionAddressRepository(CcsContext context)
+        {
+            _context = context;
+        }
+        //查询列表
+        public List<CcsActionAddress> GetList(CcsActionAddress vo)
+        {
+            IQueryable<CcsActionAddress> actions = _context.CcsActionAddress;
+            if (vo.ActionId != null)
+            {
+                actions = actions.Where(x => x.ActionId == vo.ActionId);
+            }
+            if (!string.IsNullOrEmpty(vo.Type))
+            {
+                actions = actions.Where(x => x.Type == vo.Type);
+            } 
+            return actions.OrderBy(x => x.Sort).ToList();
+
+        } 
+
+        //查询详情
+        public async Task<CcsActionAddress> GetById(int id)
+        {
+            CcsActionAddress action = await _context.CcsActionAddress.FindAsync(id);
+            return action; 
+        }
+
+        //添加详情
+        public async Task<bool> Create(CcsActionAddress vo)
+        { 
+            _context.CcsActionAddress.Add(vo);
+            await _context.SaveChangesAsync();
+            return true;
+        }
+
+        //更新详情
+        public async Task<bool> Update(CcsActionAddress vo)
+        {
+            _context.Entry(vo).State = EntityState.Modified;
+            try
+            {
+                await _context.SaveChangesAsync();
+            }
+            catch (DbUpdateConcurrencyException)
+            { 
+                    throw; 
+            }
+            return true;
+        }
+
+    
+
+        
+    }
+}

+ 7 - 2
IMCS_CCS/Repository/CcsActionRepository.cs

@@ -20,14 +20,19 @@ namespace IMCS.CCS.Repository
         public List<CcsAction> GetList(CcsAction vo)
         {
             IQueryable<CcsAction> actions = _context.CcsAction;
-            if (string.IsNullOrEmpty(vo.OperateType))
+            if (!string.IsNullOrEmpty(vo.OperateType))
             {
                 actions = actions.Where(x => x.OperateType.Equals(vo.OperateType));
             }
-            if (string.IsNullOrEmpty(vo.OrderIndex))
+            if (!string.IsNullOrEmpty(vo.OrderIndex))
             {
                 actions = actions.Where(x => x.OrderIndex.Equals(vo.OrderIndex));
             }
+            if (!string.IsNullOrEmpty(vo.Ip))
+            {
+                actions = actions.Where(x => x.Ip.Equals(vo.Ip));
+            }
+             
             return actions.ToList();
 
         } 

+ 3 - 1
IMCS_CCS/Repository/CcsContext.cs

@@ -17,7 +17,7 @@ namespace IMCS.CCS.Repository
 
         public DbSet<User> User { get; set; }
 
-        public DbSet<IMCS.CCS.Entitys.Device> Device { get; set; }
+        public DbSet<Device> Device { get; set; }
 
         public DbSet<EquipmentMonitor> EquipmentMonitor { get; set; }
 
@@ -28,5 +28,7 @@ namespace IMCS.CCS.Repository
         public DbSet<CcsAction> CcsAction { get; set; }
 
         public DbSet<CcsTagValue> CcsTagValue { get; set; }
+
+        public DbSet<CcsActionAddress> CcsActionAddress { get; set; }
     }
     }

+ 23 - 0
IMCS_CCS/Repository/ICcsActionAddressRepository.cs

@@ -0,0 +1,23 @@
+using IMCS.CCS.Entitys;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks; 
+
+namespace IMCS.CCS.Repository
+{
+    public interface ICcsActionAddressRepository
+    {
+        List<CcsActionAddress> GetList(CcsActionAddress vo);
+        //查询详情
+        Task<CcsActionAddress> GetById(int id);
+
+        //添加
+        Task<bool> Create(CcsActionAddress vo);
+
+        //更新
+        Task<bool> Update(CcsActionAddress vo);
+
+ 
+    }
+}

+ 22 - 0
IMCS_CCS/Service/ICcsActionAddressService.cs

@@ -0,0 +1,22 @@
+using IMCS.CCS.Entitys;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace IMCS.CCS.Services
+{
+    public interface ICcsActionAddressService
+    {
+        List<CcsActionAddress> GetList(CcsActionAddress vo);
+          
+        //查询详情
+        Task<CcsActionAddress> GetById(int id);
+
+        //添加
+        Task<bool> Create(CcsActionAddress vo);
+
+        //更新
+        Task<bool> Update(CcsActionAddress vo);
+ 
+    }
+}

+ 40 - 0
IMCS_CCS/Service/Impl/CcsActionAddressService.cs

@@ -0,0 +1,40 @@
+using IMCS.CCS.Entitys;
+using IMCS.CCS.Repository;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks; 
+
+namespace IMCS.CCS.Services
+{
+    public class CcsActionAddressService : ICcsActionAddressService
+    {
+        private ICcsActionAddressRepository _repository;
+
+        public CcsActionAddressService(ICcsActionAddressRepository repository) {
+            _repository = repository;
+        }
+        public  List<CcsActionAddress> GetList(CcsActionAddress vo)
+        {
+            return _repository.GetList(vo);
+        }
+        //查询详情
+        public async Task<CcsActionAddress> GetById(int id)
+        {
+            return await _repository.GetById(id);
+        }
+
+        //添加
+        public async Task<bool> Create(CcsActionAddress vo)
+        {
+            return await _repository.Create(vo);
+        }
+
+        //更新
+        public async Task<bool> Update(CcsActionAddress vo)
+        {
+            return await _repository.Update(vo);
+        }
+ 
+    }
+}

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 341 - 328
IMCS_CCS/Service/Impl/HttpRequestService.cs


+ 369 - 159
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -37,10 +37,12 @@ namespace IMCS.CCS.Service.Impl
 
         private string ecsUrlContext;
 
-        private string fanucUrlContext;
+        private string fanucUrlContext; 
 
         private string opcuacUrlContext;
 
+        private string hdhUrlContext;
+
         private string LOG_TITLE_OPCUA = "OPCUA采集";
 
         private string LOG_TITLE_S7 = "S7采集";
@@ -70,6 +72,7 @@ namespace IMCS.CCS.Service.Impl
             ecsUrlContext = Configuration.GetConnectionString("ecsUrlContext");
             fanucUrlContext = Configuration.GetConnectionString("fanucUrlContext");
             opcuacUrlContext = Configuration.GetConnectionString("opcuacUrlContext");
+            hdhUrlContext = Configuration.GetConnectionString("hdhUrlContext");
         }
 
         /// <summary>
@@ -350,7 +353,7 @@ namespace IMCS.CCS.Service.Impl
                             ResponseFanucData fanucData = JsonConvert.DeserializeObject<ResponseFanucData>(Result.Message);
                             foreach (CcsTagValue tagValueData in tagValues)
                             {
-                                string operateResult = GetFanucValue(fanucData, tagValueData.TagValue);
+                                string operateResult = GetFanucValue(fanucData, tagValueData.Address);
                                 if (tagValueData.TagValue != operateResult)
                                 {
                                     tagValueData.TagValue = operateResult.ToString();
@@ -389,9 +392,7 @@ namespace IMCS.CCS.Service.Impl
         {
             List<TaskCallback> list = await _taskCallbackService.GetAllList();
 
-            list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())
-                                || x.OperateType.Equals(ActionTypeEnum.SendLinShift.ToString())
-                                || x.OperateType.Equals(ActionTypeEnum.SendLinShiftFine.ToString())).ToList();
+            list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
             string message = "";
             try
             {
@@ -430,7 +431,7 @@ namespace IMCS.CCS.Service.Impl
         }
 
         /// <summary>
-        /// 柔性产线,伺服回调任务
+        /// 柔性产线,伺服等取和放回调任务
         /// </summary> 
         /// <returns></returns>
         public async Task<string> CallbackJob2()
@@ -442,8 +443,14 @@ namespace IMCS.CCS.Service.Impl
             taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetFlexibleWire.ToString())
                                  || x.OperateType.Equals(ActionTypeEnum.SendFlexibleWire.ToString())
                                  || x.OperateType.Equals(ActionTypeEnum.MoveRobotPosition.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.GetIntelligenceUnit.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.SendIntelligenceUnit.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.GetQualityCenter.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString()) 
                                  || x.OperateType.Equals(ActionTypeEnum.GetServoStacker.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString())).ToList();
+                                 || x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString()) 
+                                 || x.OperateType.Equals(ActionTypeEnum.SendLinShift.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.SendLinShiftFine.ToString())).ToList();
             List<TaskCallback> list = new List<TaskCallback>();
             foreach (Device device in deviceList)
             {
@@ -463,18 +470,11 @@ namespace IMCS.CCS.Service.Impl
                     DateTime currentTime = DateTime.Now;
                     CcsTagValue tagValueQuery = new CcsTagValue();
                     tagValueQuery.Ip = task.IP;
-                    tagValueQuery.Address = task.Address;
-                    CcsTagValue tagValue = _ccsTagValueService.GetList(tagValueQuery).FirstOrDefault();
-                    if (tagValue == null)
-
-                    {
-
-                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
-                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                        continue;
-
-                    }
-                    if (tagValue.TagValue == task.CallbackValue)
+                    //tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
+                    CcsTagValue callBacktagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
+                    
+                    if (callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue)
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -495,62 +495,61 @@ namespace IMCS.CCS.Service.Impl
                         }
 
                     }
-                    else if (tagValue.TagValue == task.CallbackValue2)
-                    {
-                        CallBackRequestData requestData = new CallBackRequestData();
-                        requestData.taskId = long.Parse(task.TaskId);
-                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
-                        requestData.code = "0";
-                        requestData.msg = "操作失败";
-                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
-                        if (result.IsSuccess)
+                    //回调检测到失败,回调通知ecs
+                    if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
+                    { 
+                        bool failFalg = false;
+                        if (!string.IsNullOrEmpty(task.FailAddress))
                         {
-                            task.State = false;
-                            task.UpdateTime = DateTime.Now;
-                            await _taskCallbackService.Update(task);
-                            message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
-                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress && o.TagValue == task.CallbackFailValue).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
                         }
-                        else
+                        if (!string.IsNullOrEmpty(task.FailAddress2))
                         {
-                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
-                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress2 && o.TagValue == task.CallbackFailValue2).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
                         }
-                    }
-                    else if (!string.IsNullOrEmpty(task.CallbackValue3))
-                    {
-                        CcsTagValue tagValueQuery3 = new CcsTagValue();
-                        tagValueQuery.Ip = task.IP;
-                        tagValueQuery.Address = task.Address3;
-                        List<CcsTagValue> tagValues3 = _ccsTagValueService.GetList(tagValueQuery);
+                        if (!string.IsNullOrEmpty(task.FailAddress3))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress3 && o.TagValue == task.CallbackFailValue3).ToList();
 
-                        if (tagValues3 != null && tagValues3.Count > 0)
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (failFalg) 
                         {
-                            CcsTagValue tagValue3 = tagValues3[0];
-                            if (tagValue3.TagValue == task.CallbackValue3)
+                            CallBackRequestData requestData = new CallBackRequestData();
+                            requestData.taskId = long.Parse(task.TaskId);
+                            requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                            requestData.code = "0";
+                            requestData.msg = "操作失败";
+                            var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                            if (result.IsSuccess)
                             {
-                                CallBackRequestData requestData = new CallBackRequestData();
-                                requestData.taskId = long.Parse(task.TaskId);
-                                requestData.taskNodeId = long.Parse(task.TaskNodeId);
-                                requestData.code = "0";
-                                requestData.msg = "操作失败";
-                                var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
-                                if (result.IsSuccess)
-                                {
-                                    task.State = false;
-                                    task.UpdateTime = DateTime.Now;
-                                    await _taskCallbackService.Update(task);
-                                    message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
-                                    Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
-                                }
-                                else
-                                {
-                                    message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
-                                    Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                                }
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.Update(task);
+                                message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
+                                Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
                             }
                         }
                     }
+                     
                 }
                 return string.IsNullOrEmpty(message) ? "无回调任务" : message;
             }
@@ -591,29 +590,10 @@ namespace IMCS.CCS.Service.Impl
                     DateTime currentTime = DateTime.Now;
                     CcsTagValue tagValueQuery = new CcsTagValue();
                     tagValueQuery.Ip = task.IP;
-                    tagValueQuery.Address = task.Address;
-                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
-
-                    CcsTagValue tagValueQuery3 = new CcsTagValue();
-                    tagValueQuery3.Ip = task.IP;
-                    tagValueQuery3.Address = task.Address3;
-                    List<CcsTagValue> tagValues3 = _ccsTagValueService.GetList(tagValueQuery3);
-                    CcsTagValue tagValue = null;
-                    CcsTagValue tagValue3 = null;
-                    if (tagValues != null && tagValues.Count > 0 && tagValues3 != null && tagValues3.Count > 0)
-                    {
-                        tagValue = tagValues[0];
-                        tagValue3 = tagValues3[0];
-                    }
-                    else
-                    {
-
-                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
-                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                        continue;
-
-                    }
-                    if (tagValue.TagValue == task.CallbackValue)
+                    //tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
+                    CcsTagValue callBacktagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
+                    if (callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue)
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -621,14 +601,15 @@ namespace IMCS.CCS.Service.Impl
                         var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
                         if (result.IsSuccess)
                         {
-                            if (!string.IsNullOrEmpty(task.Address3))
+                            if (!string.IsNullOrEmpty(task.SuccessResetAddress))
                             {
                                 Plc s7 = DevicePlcS7.S7(task.IP, ProtocalTypeEnum.S7_1500.ToString());
                                 if (s7.IsConnected == true)
                                 {
-                                    string Address3 = ToolUtils.AddressConvertDBW(task.Address3);
-                                    short mc = 0;
-                                    s7.Write(Address3, mc);
+                                    string ResetAddress = ToolUtils.AddressConvertDBW(task.SuccessResetAddress);
+                                    //short mc = 0;
+                                    short mc = (short)int.Parse(task.SuccessResetValue);
+                                    s7.Write(ResetAddress, mc);
                                     s7.Close();
                                 }
                             }
@@ -646,26 +627,59 @@ namespace IMCS.CCS.Service.Impl
                         }
 
                     }
-                    else if (tagValue.TagValue == task.CallbackValue2)
+
+                    //回调检测到失败,回调通知ecs
+                    if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
                     {
-                        CallBackRequestData requestData = new CallBackRequestData();
-                        requestData.taskId = long.Parse(task.TaskId);
-                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
-                        requestData.code = "0";
-                        requestData.msg = "操作失败";
-                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
-                        if (result.IsSuccess)
+                        bool failFalg = false;
+                        if (!string.IsNullOrEmpty(task.FailAddress))
                         {
-                            task.State = false;
-                            task.UpdateTime = DateTime.Now;
-                            await _taskCallbackService.Update(task);
-                            message = message + result.Message + ";";
-                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress && o.TagValue == task.CallbackFailValue).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
                         }
-                        else
+                        if (!string.IsNullOrEmpty(task.FailAddress2))
                         {
-                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
-                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress2 && o.TagValue == task.CallbackFailValue2).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress3))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress3 && o.TagValue == task.CallbackFailValue3).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (failFalg)
+                        {
+                            CallBackRequestData requestData = new CallBackRequestData();
+                            requestData.taskId = long.Parse(task.TaskId);
+                            requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                            requestData.code = "0";
+                            requestData.msg = "操作失败";
+                            var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                            if (result.IsSuccess)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.Update(task);
+                                message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
+                                Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            }
                         }
                     }
 
@@ -680,7 +694,7 @@ namespace IMCS.CCS.Service.Impl
         }
 
         /// <summary>
-        /// 启动机床程序,智能单元及质量中心取放回调任务
+        /// 启动机床程序回调任务
         /// </summary> 
         /// <returns></returns>
         public async Task<string> CallbackJob4()
@@ -689,11 +703,7 @@ namespace IMCS.CCS.Service.Impl
             //在线设备
             List<Device> deviceList = _deviceService.GetDeviceList();
 
-            taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetIntelligenceUnit.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.SendIntelligenceUnit.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.GetQualityCenter.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
+            taskList = taskList.Where(x =>  x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
             List<TaskCallback> list = new List<TaskCallback>();
             foreach (Device device in deviceList)
             {
@@ -713,20 +723,11 @@ namespace IMCS.CCS.Service.Impl
                     DateTime currentTime = DateTime.Now;
                     CcsTagValue tagValueQuery = new CcsTagValue();
                     tagValueQuery.Ip = task.IP;
-                    tagValueQuery.Address = task.Address;
+                    //tagValueQuery.Address = task.Address;
                     List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
-                    CcsTagValue tagValue = null;
-                    if (tagValues != null && tagValues.Count > 0)
-                    {
-                        tagValue = tagValues[0];
-                    }
-                    else
-                    {
-                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
-                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                        continue;
-                    }
-                    if (tagValue.TagValue == task.CallbackValue)
+                    CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault() ;
+                     
+                    if (tagValue != null && tagValue.TagValue == task.CallbackValue)
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -746,6 +747,61 @@ namespace IMCS.CCS.Service.Impl
                             Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
                         }
                     }
+
+                    //回调检测到失败,回调通知ecs
+                    if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
+                    {
+                        bool failFalg = false;
+                        if (!string.IsNullOrEmpty(task.FailAddress))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress && o.TagValue == task.CallbackFailValue).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress2))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress2 && o.TagValue == task.CallbackFailValue2).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress3))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress3 && o.TagValue == task.CallbackFailValue3).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (failFalg)
+                        {
+                            CallBackRequestData requestData = new CallBackRequestData();
+                            requestData.taskId = long.Parse(task.TaskId);
+                            requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                            requestData.code = "0";
+                            requestData.msg = "操作失败";
+                            var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                            if (result.IsSuccess)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.Update(task);
+                                message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
+                                Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            }
+                        }
+                    }
                 }
                 return string.IsNullOrEmpty(message) ? "无回调任务" : message;
             }
@@ -785,15 +841,10 @@ namespace IMCS.CCS.Service.Impl
                     DateTime currentTime = DateTime.Now;
                     CcsTagValue tagValueQuery = new CcsTagValue();
                     tagValueQuery.Ip = task.IP;
-                    tagValueQuery.Address = task.Address;
-                    CcsTagValue tagValue = _ccsTagValueService.GetList(tagValueQuery).FirstOrDefault();
-                    if (tagValue == null)
-                    {
-                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
-                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                        continue;
-                    }
-                    if (tagValue.TagValue == task.CallbackValue)
+                    //tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
+                    CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
+                    if (tagValue != null && tagValue.TagValue == task.CallbackValue)
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -813,6 +864,61 @@ namespace IMCS.CCS.Service.Impl
                             Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
                         }
                     }
+
+                    //回调检测到失败,回调通知ecs
+                    if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
+                    {
+                        bool failFalg = false;
+                        if (!string.IsNullOrEmpty(task.FailAddress))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress && o.TagValue == task.CallbackFailValue).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress2))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress2 && o.TagValue == task.CallbackFailValue2).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress3))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress3 && o.TagValue == task.CallbackFailValue3).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (failFalg)
+                        {
+                            CallBackRequestData requestData = new CallBackRequestData();
+                            requestData.taskId = long.Parse(task.TaskId);
+                            requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                            requestData.code = "0";
+                            requestData.msg = "操作失败";
+                            var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                            if (result.IsSuccess)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.Update(task);
+                                message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
+                                Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            }
+                        }
+                    }
                 }
                 return string.IsNullOrEmpty(message) ? "无回调任务" : message;
             }
@@ -853,16 +959,11 @@ namespace IMCS.CCS.Service.Impl
                     DateTime currentTime = DateTime.Now;
                     CcsTagValue tagValueQuery = new CcsTagValue();
                     tagValueQuery.Ip = task.IP;
-                    tagValueQuery.Address = task.Address;
-                    CcsTagValue tagValue = _ccsTagValueService.GetList(tagValueQuery).FirstOrDefault();
-                    if (tagValue == null)
-                    {
-
-                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
-                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
-                        continue;
-                    }
-                    if (tagValue.TagValue == task.CallbackValue || tagValue.TagValue == task.CallbackValue2)
+                    //tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
+                    CcsTagValue tagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
+                     
+                    if (tagValue != null && (tagValue.TagValue == task.CallbackValue || tagValue.TagValue == task.CallbackValue2))
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -882,6 +983,61 @@ namespace IMCS.CCS.Service.Impl
                             Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
                         }
                     }
+
+                    //回调检测到失败,回调通知ecs
+                    if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
+                    {
+                        bool failFalg = false;
+                        if (!string.IsNullOrEmpty(task.FailAddress))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress && o.TagValue == task.CallbackFailValue).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress2))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress2 && o.TagValue == task.CallbackFailValue2).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(task.FailAddress3))
+                        {
+                            List<CcsTagValue> FailCallbackTagValues = tagValues.Where(o => o.Address == task.FailAddress3 && o.TagValue == task.CallbackFailValue3).ToList();
+
+                            if (FailCallbackTagValues != null && FailCallbackTagValues.Count > 0)
+                            {
+                                failFalg = true;
+                            }
+                        }
+                        if (failFalg)
+                        {
+                            CallBackRequestData requestData = new CallBackRequestData();
+                            requestData.taskId = long.Parse(task.TaskId);
+                            requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                            requestData.code = "0";
+                            requestData.msg = "操作失败";
+                            var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                            if (result.IsSuccess)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.Update(task);
+                                message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
+                                Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                            }
+                        }
+                    }
                 }
                 return string.IsNullOrEmpty(message) ? "无回调任务" : message;
             }
@@ -1153,14 +1309,64 @@ namespace IMCS.CCS.Service.Impl
                             //调用发那科是否连接接口
                             var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
 
+                            if (Result.IsSuccess && Result.Message == "0")
+                            { 
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (!oldDevice.State)
+                                {
+                                    oldDevice.State = true;
+                                    await _deviceService.UpdateDevice(oldDevice);
+                                    changeDevices.Add(oldDevice);
+                                }
+                                Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
+                                continue;
+                            }
+                            else
+                            {
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (oldDevice.State)
+                                {
+                                    oldDevice.State = false;
+                                    await _deviceService.UpdateDevice(oldDevice);
+                                    changeDevices.Add(oldDevice);
+                                }
+                                Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
+                                message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
+                                continue;
+                            }
+                        }
+                        catch (Exception opcex)
+                        {
+                            Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                            if (oldDevice.State)
+                            {
+                                oldDevice.State = false;
+                                await _deviceService.UpdateDevice(oldDevice);
+                                changeDevices.Add(oldDevice);
+                            }
+                            Log.Instance.WriteLogAdd("Fanuc连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
+                            continue;
+                        }
+                    }
+                    else if (device.ProtocolType.Equals(ProtocalTypeEnum.HEIDEHAIN.ToString()))
+                    {
+                        try
+                        {
+                            RequestHeidhData hdhReq = new RequestHeidhData();
+                            hdhReq.ServerUrl = device.ServerUrl;
+                            hdhReq.MachineName = device.UserName;
+                            hdhReq.Type = OpcUaActionTypeEnum.Connect.ToString();
+                            var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
+                            ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
+
                             if (!Result.IsSuccess || Result.Message != "0")
                             {
                                 Device oldDevice = await _deviceService.GetDeviceById(device.Id);
                                 if (oldDevice.State)
                                 {
-                                    device.State = false;
-                                    await _deviceService.UpdateDevice(device);
-                                    changeDevices.Add(device);
+                                    oldDevice.State = false;
+                                    await _deviceService.UpdateDevice(oldDevice);
+                                    changeDevices.Add(oldDevice);
                                 }
                                 Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
                                 message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
@@ -1171,9 +1377,9 @@ namespace IMCS.CCS.Service.Impl
                                 Device oldDevice = await _deviceService.GetDeviceById(device.Id);
                                 if (!oldDevice.State)
                                 {
-                                    device.State = true;
-                                    await _deviceService.UpdateDevice(device);
-                                    changeDevices.Add(device);
+                                    oldDevice.State = true;
+                                    await _deviceService.UpdateDevice(oldDevice);
+                                    changeDevices.Add(oldDevice);
                                 }
                                 Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
                                 continue;
@@ -1184,9 +1390,9 @@ namespace IMCS.CCS.Service.Impl
                             Device oldDevice = await _deviceService.GetDeviceById(device.Id);
                             if (oldDevice.State)
                             {
-                                device.State = false;
-                                await _deviceService.UpdateDevice(device);
-                                changeDevices.Add(device);
+                                oldDevice.State = false;
+                                await _deviceService.UpdateDevice(oldDevice);
+                                changeDevices.Add(oldDevice);
                             }
                             Log.Instance.WriteLogAdd("Fanuc连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
                             continue;
@@ -1211,20 +1417,24 @@ namespace IMCS.CCS.Service.Impl
         /// fanuc根据类型获取值
         /// </summary> 
         /// <returns></returns>
-        private string GetFanucValue(ResponseFanucData fanucData, string tagValue)
+        private string GetFanucValue(ResponseFanucData fanucData, string address)
         {
             string value = "";
-            if (tagValue.Equals(FanucAddressEnum.MainProg.ToString()))
+            if (address == FanucAddressEnum.MainProg.ToString())
             {
                 value = fanucData.MainProg;
             }
-            else if (tagValue.Equals(FanucAddressEnum.Status.ToString()))
+            else if (address == FanucAddressEnum.Status.ToString())
             {
                 value = fanucData.Status;
             }
-            else if (tagValue.Equals(FanucAddressEnum.PowerOnTime.ToString()))
+            else if (address == FanucAddressEnum.PowerOnTime.ToString())
             {
                 value = fanucData.PowerOnTime;
+            } 
+            else if (address == FanucAddressEnum.ActSpindle.ToString())
+            {
+                value = fanucData.ActSpindle;
             }
             return value;
 

+ 2 - 0
IMCS_CCS/Startup.cs

@@ -109,6 +109,7 @@ namespace IMCS.CCS
             services.AddScoped<ICcsActionService, CcsActionService>(); 
             services.AddScoped<ICcsTagValueService, CcsTagValueService>();
             services.AddScoped<ITaskJobService, TaskJobService>();
+            services.AddScoped<ICcsActionAddressService, CcsActionAddressService>();
 
             services.AddScoped<IDeviceRepository, DeviceRepository>();
             services.AddScoped<IEquipmentMonitorRepository, EquipmentMonitorRepository>();
@@ -116,6 +117,7 @@ namespace IMCS.CCS
             services.AddScoped<IDictionaryRepository, DictionaryRepository>();
             services.AddScoped<ICcsActionRepository, CcsActionRepository>();
             services.AddScoped<ICcsTagValueRepository, CcsTagValueRepository>();
+            services.AddScoped<ICcsActionAddressRepository, CcsActionAddressRepository>();
             #endregion
         }
 

+ 9 - 5
IMCS_CCS/appsettings.json

@@ -27,12 +27,16 @@
   "RedisConnectionString": "127.0.0.1:6379,password=123456,defaultDatabase=0",
   //Êý¾ÝÁ¬½ÓÅäÖÃ
   "ConnectionStrings": {
-    "mysqlContext": "server=localhost;port=3306;database=demo;uid=root;pwd=123456;CharSet=utf8;Allow Zero Datetime=True",
+    "mysqlContext": "server=localhost;port=3306;database=imcs_ccs_new;uid=root;pwd=123456;CharSet=utf8;Allow Zero Datetime=True",
     "ecsUrlContext": "http://localhost:5200/api/JobTasks/test",
-    "FTPServer": "192.168.170.25",
-    "FTPUser": "PROG",
-    "FTPPwd": "abc.1234",
+    //"FTPServer": "192.168.170.25",
+    //"FTPUser": "PROG",
+    //"FTPPwd": "abc.1234",
+    "FTPServer": "127.0.0.1",
+    "FTPUser": "test",
+    "FTPPwd": "test",
     "fanucUrlContext": "http://localhost:5100/fanuc/",
-    "opcuacUrlContext": "http://localhost:8010/opcua/"
+    "opcuacUrlContext": "http://localhost:8010/opcua/",
+    "hdhUrlContext": "http://localhost:8011/heidenhain/"
   }
 }

+ 13 - 8
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS.CCS.xml

@@ -596,6 +596,11 @@
             动作名称
             </summary>
         </member>
+        <member name="T:IMCS.CCS.Entitys.ActionAddressTypeEnum">
+            <summary>
+            动作地址类型
+            </summary>
+        </member>
         <member name="P:IMCS.CCS.Entitys.CcsTagValue.Address">
             <summary>
             address
@@ -921,12 +926,7 @@
             主轴负载
             </summary>
         </member>
-        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.monitorType">
-            <summary>
-            监控类型
-            </summary>
-        </member>
-        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.toolNo">
+        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.number">
             <summary>
             刀具号
             </summary>
@@ -1336,7 +1336,7 @@
         </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob2">
             <summary>
-            柔性产线,伺服回调任务
+            柔性产线,伺服等取和放回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -1348,7 +1348,7 @@
         </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob4">
             <summary>
-            启动机床程序,智能单元及质量中心取放回调任务
+            启动机床程序回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -2000,6 +2000,11 @@
             SCP获取文件
             </summary> 
         </member>
+        <member name="T:IMCS_CCS.Model.vo.HeidnActionTypeEnum">
+            <summary>
+            类型名称
+            </summary>
+        </member>
         <member name="T:IMCS_CCS.Model.vo.OpcUaActionTypeEnum">
             <summary>
             类型名称

BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.pdb


+ 9 - 5
IMCS_CCS/bin/Debug/netcoreapp3.1/appsettings.json

@@ -27,12 +27,16 @@
   "RedisConnectionString": "127.0.0.1:6379,password=123456,defaultDatabase=0",
   //Êý¾ÝÁ¬½ÓÅäÖÃ
   "ConnectionStrings": {
-    "mysqlContext": "server=localhost;port=3306;database=demo;uid=root;pwd=123456;CharSet=utf8;Allow Zero Datetime=True",
+    "mysqlContext": "server=localhost;port=3306;database=imcs_ccs_new;uid=root;pwd=123456;CharSet=utf8;Allow Zero Datetime=True",
     "ecsUrlContext": "http://localhost:5200/api/JobTasks/test",
-    "FTPServer": "192.168.170.25",
-    "FTPUser": "PROG",
-    "FTPPwd": "abc.1234",
+    //"FTPServer": "192.168.170.25",
+    //"FTPUser": "PROG",
+    //"FTPPwd": "abc.1234",
+    "FTPServer": "127.0.0.1",
+    "FTPUser": "test",
+    "FTPPwd": "test",
     "fanucUrlContext": "http://localhost:5100/fanuc/",
-    "opcuacUrlContext": "http://localhost:8010/opcua/"
+    "opcuacUrlContext": "http://localhost:8010/opcua/",
+    "hdhUrlContext": "http://localhost:8011/heidenhain/"
   }
 }

+ 1 - 1
IMCS_CCS/bin/Debug/netcoreapp3.1/wwwroot/db/Tasks.json

@@ -1 +1 @@
-[{"Id":"79279511-ae90-4099-adca-3aba6851070d","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"任务回调","GroupName":"任务回调","Cron":"*/2 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/callbackJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":null,"CreateTime":"2022-06-13T17:18:05.0682276+08:00"},{"Id":"ef51c3b5-a3c6-44b4-962b-22b4aa2fb5d1","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"机床状态采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/DataCollectOPCUAJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-06-18T22:19:04.0040782+08:00","CreateTime":"2022-06-12T14:00:24.4222816+08:00"},{"Id":"07769788-3322-47e4-9fd4-65a839e13444","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"设备监控","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/DeviceStatusJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":1,"ExecuteTime":null,"CreateTime":"2022-06-18T22:20:06.9675162+08:00"}]
+[{"Id":"79279511-ae90-4099-adca-3aba6851070d","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"任务回调","GroupName":"任务回调","Cron":"*/2 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/callbackJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":null,"CreateTime":"2022-06-13T17:18:05.0682276+08:00"},{"Id":"a96c8103-c9cc-4960-a18a-fa7d0e634f17","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"PLC数据采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DataCollectS7Job","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-08-04T17:15:55.2263861+08:00","CreateTime":"2022-07-28T16:51:54.5352637+08:00"},{"Id":"ef51c3b5-a3c6-44b4-962b-22b4aa2fb5d1","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"发那科机床采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DataCollectFanucJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-08-04T17:16:08.0041194+08:00","CreateTime":"2022-06-12T14:00:24.4222816+08:00"},{"Id":"07769788-3322-47e4-9fd4-65a839e13444","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"设备监控","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DeviceStatusJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-07-28T16:56:54.7369303+08:00","CreateTime":"2022-06-18T22:20:06.9675162+08:00"}]

BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.AssemblyReference.cache


+ 1 - 1
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-e364bda56df560de8131e038ae52ae34c02c9704
+b81d531ee7c5b61519fb3001fc057cc450622736

BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.pdb


+ 1 - 1
IMCS_CCS/wwwroot/db/Tasks.json

@@ -1 +1 @@
-[{"Id":"79279511-ae90-4099-adca-3aba6851070d","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"任务回调","GroupName":"任务回调","Cron":"*/2 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/callbackJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":null,"CreateTime":"2022-06-13T17:18:05.0682276+08:00"},{"Id":"ef51c3b5-a3c6-44b4-962b-22b4aa2fb5d1","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"机床状态采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/DataCollectOPCUAJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-06-18T22:19:04.0040782+08:00","CreateTime":"2022-06-12T14:00:24.4222816+08:00"},{"Id":"07769788-3322-47e4-9fd4-65a839e13444","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"设备监控","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:5200/api/JobTasks/DeviceStatusJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":1,"ExecuteTime":null,"CreateTime":"2022-06-18T22:20:06.9675162+08:00"}]
+[{"Id":"79279511-ae90-4099-adca-3aba6851070d","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"任务回调","GroupName":"任务回调","Cron":"*/2 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/callbackJob2","HeaderToken":"","RequsetMode":0,"Remark":"","State":1,"ExecuteTime":"2022-08-04T17:32:46.8639251+08:00","CreateTime":"2022-06-13T17:18:05.0682276+08:00"},{"Id":"a96c8103-c9cc-4960-a18a-fa7d0e634f17","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"PLC数据采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DataCollectS7Job","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-08-04T17:15:55.2263861+08:00","CreateTime":"2022-07-28T16:51:54.5352637+08:00"},{"Id":"ef51c3b5-a3c6-44b4-962b-22b4aa2fb5d1","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"发那科机床采集","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DataCollectFanucJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-08-04T17:16:08.0041194+08:00","CreateTime":"2022-06-12T14:00:24.4222816+08:00"},{"Id":"07769788-3322-47e4-9fd4-65a839e13444","ProjectId":"39028940-7220-465f-9ad6-830df4bda250","ProjectName":"数据采集中心 ","Name":"设备监控","GroupName":"数据采集","Cron":"*/1 * * * * ?","ApiUrl":"http://localhost:8089/api/JobTasks/DeviceStatusJob","HeaderToken":"","RequsetMode":0,"Remark":"","State":0,"ExecuteTime":"2022-07-28T16:56:54.7369303+08:00","CreateTime":"2022-06-18T22:20:06.9675162+08:00"}]

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно