Selaa lähdekoodia

新增海德汉采集接口

zhuhao 2 vuotta sitten
vanhempi
commit
64c6f903d2

+ 10 - 0
IMCS_CCS/Controllers/JobTasksController.cs

@@ -115,6 +115,16 @@ namespace IMCS.CCS.Controllers
             return await _taskJobService.DataCollectFanucJob();
         }
 
+        /// <summary>
+        /// 采集数据HEIDEHAIN
+        /// </summary> 
+        /// <returns></returns>
+        [HttpPost("DataCollectHeidehainJob")]
+        public async Task<string> DataCollectHeidehainJob()
+        {
+            return await _taskJobService.DataCollectHeidehainJob();
+        }
+
         /// <summary>
         /// 监控设备状态
         /// </summary> 

+ 6 - 0
IMCS_CCS/Service/ITaskJobService.cs

@@ -66,6 +66,12 @@ namespace IMCS.CCS.Service
         /// <returns></returns>
         Task<string> DataCollectFanucJob();
 
+        /// <summary>
+        /// 采集数据HEIDEHAIN
+        /// </summary> 
+        /// <returns></returns>
+        Task<string> DataCollectHeidehainJob();
+
         /// <summary>
         /// 监控设备状态
         /// </summary>

+ 56 - 60
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -56,6 +56,10 @@ namespace IMCS.CCS.Service.Impl
 
         private string LOG_TITLE_OPCUA = "OPCUA采集";
 
+        private string LOG_TITLE_FUNC = "发那科采集";
+
+        private string LOG_TITLE_HEIDEHAIN = "海德汉采集";
+
         private string LOG_TITLE_S7 = "S7采集";
 
         private string LOG_TITLE_CALLBACK = "回调任务";
@@ -205,6 +209,8 @@ namespace IMCS.CCS.Service.Impl
                             opcUaReq.Type = OpcUaActionTypeEnum.Write.ToString();
                             await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
                         }
+                        //存储采集数据
+                        CollectDataLog.Instance.WriteLogAdd(data, LOG_TITLE_OPCUA);
                     }
                     else
                     {
@@ -309,6 +315,8 @@ namespace IMCS.CCS.Service.Impl
                             {
                                 await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
                             }
+                            //存储采集数据
+                            CollectDataLog.Instance.WriteLogAdd(data, LOG_TITLE_S7);
                         }
 
                     }
@@ -334,69 +342,20 @@ namespace IMCS.CCS.Service.Impl
                 deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString()) && x.State).ToList();
                 foreach (Device device in deviceList)
                 {
-                    List<CcsTagValue> tagValues = new List<CcsTagValue>();
-                    string redis_key = "IMCS_CCS:" + device.Ip + ":" + device.ProtocolType;
-                    var data = await _redisService.Database.StringGetAsync(redis_key);
-                    if (data.IsNullOrEmpty)
-                    {
-                        CcsTagValue tagQuery = new CcsTagValue();
-                        tagQuery.ProtocolType = device.ProtocolType;
-                        tagQuery.Ip = device.Ip;
-                        tagValues = _ccsTagValueService.GetList(tagQuery);
-                        //首次设置redis
-                        if (tagValues != null && tagValues.Count > 0)
-                        {
-                            await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
-                        }
-                    }
-                    else
-                    {
-                        tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
-                    }
+                    string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
+                    //调用发那科接口
+                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=All", null, null);
 
-                    if (tagValues != null && tagValues.Count > 0)
+                    if (Result.IsSuccess)
                     {
-                        tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
-                        List<CcsTagValue> changTagValues = new List<CcsTagValue>();
-                        string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
-                        //调用发那科是否连接接口
-                        var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
-
-                        if (!Result.IsSuccess || Result.Message != "0")
-                        {
-                            device.State = false;
-                            await _deviceService.UpdateDevice(device);
-                            Log.Instance.WriteLogAdd("FANUC采集异常,FANUC连不上", LOG_TITLE_S7);
-                            return "采集失败,FANUC连不上";
-                        }
-                        else
-                        {
-                            //调用发那科采集接口
-                            Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=All", null, null);
-                            ResponseFanucData fanucData = JsonConvert.DeserializeObject<ResponseFanucData>(Result.Message);
-                            foreach (CcsTagValue tagValueData in tagValues)
-                            {
-                                string operateResult = GetFanucValue(fanucData, tagValueData.Address);
-                                if (tagValueData.TagValue != operateResult)
-                                {
-                                    tagValueData.TagValue = operateResult.ToString();
-                                    tagValueData.UpdateTime = DateTime.Now;
-                                    changTagValues.Add(tagValueData);
-                                    Log.Instance.WriteLogAdd("FANUC采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_S7);
-                                    //有变化更新数据库
-                                    await _ccsTagValueService.Update(tagValueData);
-                                }
-                                Thread.Sleep(50);
-                            }
-
-                            //值有变化,重新设置一次redis
-                            if (changTagValues != null && changTagValues.Count > 0)
-                            {
-                                await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
-                            }
-                        }
-
+                        string redis_key = "IMCS_CCS:" + device.Ip + ":" + device.ProtocolType;
+                        //采集数据放入缓存
+                        await _redisService.Database.StringSetAsync(redis_key, Result.Message);
+                        //存储采集数据
+                        CollectDataLog.Instance.WriteLogAdd(Result.Message, LOG_TITLE_FUNC);
                     }
+                    
+                        
                 }
                 return "FANUC采集成功";
             }
@@ -407,6 +366,43 @@ namespace IMCS.CCS.Service.Impl
             }
         }
 
+        /// <summary>
+        /// 采集数据HEIDEHAIN
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> DataCollectHeidehainJob()
+        {
+            try
+            {
+                List<Device> deviceList = await getDeviceList();
+                deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.HEIDEHAIN.ToString()) && x.State).ToList();
+                foreach (Device device in deviceList)
+                {
+                    RequestHeidhData hdhReq = new RequestHeidhData();
+                    hdhReq.ServerUrl = device.ServerUrl;
+                    hdhReq.MachineName = device.UserName;
+                    hdhReq.Type = "Collect";
+                    //调用海德汉采集接口
+                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
+                    {
+                        string redis_key = "IMCS_CCS:" + device.Ip + ":" + device.ProtocolType;
+                        //采集数据放入缓存
+                        await _redisService.Database.StringSetAsync(redis_key, Result.Message);
+                        //存储采集数据
+                        CollectDataLog.Instance.WriteLogAdd(Result.Message, LOG_TITLE_HEIDEHAIN);
+                    }
+
+
+                }
+                return "HEIDEHAIN采集成功";
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("HEIDEHAIN采集异常===>>" + ex.Message, LOG_TITLE_S7);
+                return "HEIDEHAIN采集失败";
+            }
+        }
+
         /// <summary>
         /// 上传程序回调任务
         /// </summary>