Bläddra i källkod

集成三坐标业务功能

oyq28 2 månader sedan
förälder
incheckning
669cecfb8c

+ 29 - 0
IMCS_CCS/Controllers/CcsController.cs

@@ -156,5 +156,34 @@ namespace IMCS.CCS.Controllers
         {
             return await _httpRequestService.GetTools(data);
         }
+
+        /// <summary>
+        /// 放三坐标滑台: POST: api/SendThreeCoordinates
+        /// </summary> 
+        /// <returns></returns>
+        [Route("api/SendThreeCoordinates")]
+        [HttpPost]
+        public async Task<ActionResult<ResponseECSData>> SendThreeCoordinates(RequestData<WorkData> data)
+        {
+            return await _httpRequestService.SendThreeCoordinates(data);
+        }
+
+        /// <summary>
+        /// 三坐标是否可取: POST: api/GetMiddleThreeCoordinates
+        /// </summary> 
+        /// <returns></returns>
+        [Route("api/GetMiddleThreeCoordinates")]
+        [HttpPost]
+        public async Task<ActionResult<ResponseECSData>> GetMiddleThreeCoordinates(RequestToolData data)
+        {
+            return await _httpRequestService.GetMiddleThreeCoordinates(data);
+        }
+
+        [Route("api/QueryThreeCoordinatesFreePos")]
+        [HttpPost]
+        public async Task<ActionResult<ResponseECSData>> QueryThreeCoordinatesFreePos(RequestToolData data)
+        {
+            return await _httpRequestService.QueryThreeCoordinatesFreePos(data);
+        }
     }
 }

+ 10 - 0
IMCS_CCS/Controllers/JobTasksController.cs

@@ -156,5 +156,15 @@ namespace IMCS.CCS.Controllers
 
         }
 
+        /// <summary>
+        /// 启动三坐标回调任务
+        /// </summary> 
+        /// <returns></returns>
+        [HttpPost("CallbackJob6")]
+        public async Task<string> CallbackJob6()
+        {
+            return await _taskJobService.CallbackJob6();
+        }
+
     }
 }

+ 4 - 0
IMCS_CCS/Entitys/CcsAction.cs

@@ -55,6 +55,10 @@ namespace IMCS.CCS.Entitys
         StartDryMachine,
         [EnumDescription("手动移动点位模式回调")]
         ManualModeCallback,
+        [EnumDescription("三坐标检测")]
+        SendThreeCoordinates,
+        [EnumDescription("三坐标状态查询")]
+        QueryThreeCoordinatesFreePos
 
     }
 

+ 42 - 0
IMCS_CCS/IMCS.CCS.xml

@@ -266,6 +266,18 @@
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Controllers.CcsController.SendThreeCoordinates(IMCS.CCS.Models.RequestData{IMCS.CCS.Models.WorkData})">
+            <summary>
+            放三坐标滑台: POST: api/SendThreeCoordinates
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Controllers.CcsController.GetMiddleThreeCoordinates(IMCS.CCS.Models.RequestToolData)">
+            <summary>
+            三坐标是否可取: POST: api/GetMiddleThreeCoordinates
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Controllers.DeviceController.GetDevice(System.Int32)">
             <summary>
             获取设备详情:GET: api/Device/5
@@ -1814,6 +1826,21 @@
             根据任务id查询回调列表
             </summary> 
         </member>
+        <member name="M:IMCS.CCS.Services.IHttpRequestService.SendThreeCoordinates(IMCS.CCS.Models.RequestData{IMCS.CCS.Models.WorkData})">
+            <summary>
+            放三坐标
+            </summary>
+        </member>
+        <member name="M:IMCS.CCS.Services.IHttpRequestService.GetMiddleThreeCoordinates(IMCS.CCS.Models.RequestToolData)">
+            <summary>
+            三坐标中间位是否可取
+            </summary>
+        </member>
+        <member name="M:IMCS.CCS.Services.IHttpRequestService.QueryThreeCoordinatesFreePos(IMCS.CCS.Models.RequestToolData)">
+            <summary>
+            查询三坐标检测空闲位置
+            </summary> 
+        </member>
         <member name="M:IMCS.CCS.Services.HttpRequestService.GetTagValue(IMCS.CCS.Models.RequestTagValueData)">
             <summary>
             获取状态当前值
@@ -1869,6 +1896,21 @@
             获取回调列表
             </summary> 
         </member>
+        <member name="M:IMCS.CCS.Services.HttpRequestService.SendThreeCoordinates(IMCS.CCS.Models.RequestData{IMCS.CCS.Models.WorkData})">
+            <summary>
+            放三坐标滑台
+            </summary> 
+        </member>
+        <member name="M:IMCS.CCS.Services.HttpRequestService.GetMiddleThreeCoordinates(IMCS.CCS.Models.RequestToolData)">
+            <summary>
+            三坐标中间位是否可取
+            </summary>
+        </member>
+        <member name="M:IMCS.CCS.Services.HttpRequestService.QueryThreeCoordinatesFreePos(IMCS.CCS.Models.RequestToolData)">
+            <summary>
+            查询三坐标检测空闲位置
+            </summary> 
+        </member>
         <member name="M:IMCS.CCS.Utils.CommonAtrr.FirstOrDefaultYG``1(``0,System.Action{``0})">
             <summary>
             判断当前的FirstOrDefaul是否为空,如果为空,那么不执行参数函数

+ 16 - 0
IMCS_CCS/Service/IHttpRequestService .cs

@@ -3,6 +3,7 @@ using IMCS.CCS.Entitys;
 using IMCS.CCS.Models;
 using IMCS.CCS.Models.vo;
 using IMCS_CCS.Model.vo;
+using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -76,5 +77,20 @@ namespace IMCS.CCS.Services
         /// 根据任务id查询回调列表
         /// </summary> 
         Task<List<TaskCallback>> GetCallBackListByCondition(RequestCallBackData vo);
+
+        /// <summary>
+        /// 放三坐标
+        /// </summary>
+        Task<ResponseECSData> SendThreeCoordinates(RequestData<WorkData> data);
+
+        /// <summary>
+        /// 三坐标中间位是否可取
+        /// </summary>
+        Task<ResponseECSData> GetMiddleThreeCoordinates(RequestToolData data);
+
+        /// <summary>
+        /// 查询三坐标检测空闲位置
+        /// </summary> 
+        Task<ResponseECSData> QueryThreeCoordinatesFreePos(RequestToolData req);
     }
 }

+ 7 - 1
IMCS_CCS/Service/ITaskJobService.cs

@@ -40,7 +40,13 @@ namespace IMCS.CCS.Service
         /// 启动清洗机回调任务
         /// </summary>
         /// <returns></returns>
-        Task<string> CallbackJob5(); 
+        Task<string> CallbackJob5();
+
+        /// <summary>
+        /// 启动三坐标回调任务
+        /// </summary>
+        /// <returns></returns>
+        Task<string> CallbackJob6();
 
         /// <summary>
         /// OPCUA采集

+ 241 - 1
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -929,7 +929,247 @@ namespace IMCS.CCS.Services
             }
             return list;
         }
- 
+
+        /// <summary>
+        /// 放三坐标滑台
+        /// </summary> 
+        public async Task<ResponseECSData> SendThreeCoordinates(RequestData<WorkData> req)
+        {
+            ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
+            try
+            {
+                List<Device> devices = _deviceService.GetDeviceList();
+
+                Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
+
+                if (device == null)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "设备已离线===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
+                CcsAction actionQuery = new CcsAction();
+                actionQuery.OperateType = ActionTypeEnum.SendThreeCoordinates.ToString();
+                actionQuery.Ip = req.url;
+                CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
+
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
+                HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
+                CcsActionAddress actionAddressQuery = new CcsActionAddress();
+                actionAddressQuery.ActionId = actionInfo.Id;
+                List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
+
+                string stationId = string.IsNullOrEmpty(req.data.stationId) ? "M" : req.data.stationId;
+                //int key = 0;
+                //if(stationId == "L")
+                //{
+                //    key = (int)ThreeCoordinatesPosEnum.L;
+                //}
+                //else if (stationId == "M")
+                //{
+                //    key = (int)ThreeCoordinatesPosEnum.M;
+                //}
+                //else if (stationId == "R")
+                //{
+                //    key = (int)ThreeCoordinatesPosEnum.R;
+                //}
+
+
+                //根据sort顺序,查询左中右空闲位置,写入地址列表
+                //List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString() && o.Sort == key).ToList();
+                //foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                //{
+                //    if (!string.IsNullOrEmpty(actionAddress.Address))
+                //    {
+                //        if(actionAddress.Value == "workProgramName")
+                //        { 
+                //            s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workProgramName, 40));
+                //        }
+                //        else if (actionAddress.Value == "workId")
+                //        {
+                //            s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workId, 60));
+                //        }
+                //        else if (actionAddress.Value == "procedureNo")
+                //        {
+                //            s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.procedureNo, 40));
+                //        }
+
+                //        Thread.Sleep(100);  
+                //    }
+                //}
+
+                ////查询写入地址列表
+                //List<CcsActionAddress> CcsActionAddressWriteSends = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_SEND.ToString()).OrderBy(o=>o.Sort).ToList();
+
+                //foreach (CcsActionAddress actionAddress in CcsActionAddressWriteSends)
+                //{
+                //    if (!string.IsNullOrEmpty(actionAddress.Address))
+                //    {
+                //        s7.Write(actionAddress.Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value));  
+
+                //        Thread.Sleep(SLEEP_TIME); 
+                //    }
+                //} 
+                Thread.Sleep(SLEEP_TIME);
+                s7.ConnectClose();
+
+                //插入回调
+                TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendThreeCoordinates.ToString(),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates), req.taskId, req.taskNodeId);
+                taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
+                taskCallbackData.Description = stationId;
+                taskCallbackData.CallbackFailValue3 = req.data.workId;
+                await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
+                Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates) + "放测量三坐标成功===>>" + JsonConvert.SerializeObject(req)
+                   , EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                return responseData;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "放测量三坐标故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                responseData.result = "false";
+                return responseData;
+            }
+        }
+
+        /// <summary>
+        /// 三坐标中间位是否可取
+        /// </summary>
+        public async Task<ResponseECSData> GetMiddleThreeCoordinates(RequestToolData req)
+        {
+            ResponseECSData responseData = new ResponseECSData("", "");
+
+            try
+            {
+                List<Device> devices = _deviceService.GetDeviceList();
+
+                Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
+
+                if (device == null)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "设备已离线===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
+                HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位是否可取===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                    responseData.result = "false";
+                    return responseData;
+                }
+                var operateResult = s7.ReadBool("DB300.156.3");
+                var operateResult2 = s7.ReadBool("DB300.156.6");
+                if (operateResult.Content.ToString() != "True" || operateResult2.Content.ToString() != "True")
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位不可取===>>" + operateResult.Content.ToString() + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                    responseData.result = "false";
+                    return responseData;
+                }
+                s7.ConnectClose();
+                return responseData;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位===>>" + ex.Message + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
+                responseData.result = "false";
+                return responseData;
+            }
+        }
+
+        /// <summary>
+        /// 查询三坐标检测空闲位置
+        /// </summary> 
+        public async Task<ResponseECSData> QueryThreeCoordinatesFreePos(RequestToolData req)
+        {
+            ResponseECSData responseData = new ResponseECSData("", "");
+
+            try
+            {
+                List<Device> devices = _deviceService.GetDeviceList();
+
+                Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
+
+                if (device == null)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "设备已离线===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
+                CcsAction actionQuery = new CcsAction();
+                actionQuery.OperateType = ActionTypeEnum.QueryThreeCoordinatesFreePos.ToString();
+                actionQuery.Ip = req.url;
+                CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
+
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
+                HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();                
+                if (!ConnectionResult.IsSuccess)
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "查询三坐标检测空闲位置===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
+                CcsActionAddress actionAddressQuery = new CcsActionAddress();
+                actionAddressQuery.ActionId = actionInfo.Id;
+                List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
+                //初始化为false,否则返回点位
+                responseData.result = "true";
+                //查询条件
+                List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
+                foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
+                {
+                    if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
+                    {
+                        var operateResult = s7.ReadBool(actionAddress.Address);
+                        if (!operateResult.Content.ToString().Equals(actionAddress.Value))
+                        {
+                            s7.ConnectClose();
+                            Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "三坐标检测空闲位置===>>" + actionAddress.Address + JsonConvert.SerializeObject(req),
+                            EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
+                            responseData.result = "false";
+                            return responseData;
+                        }
+                    }
+                }
+
+                s7.ConnectClose();
+
+                return responseData;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "查询三坐标检测空闲位置===>>" + ex.Message + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
+                responseData.result = "false";
+                return responseData;
+            }
+        }
+
 
         //设置回调值
         private TaskCallback setCallBackValue(List<CcsActionAddress> CcsActionAddresses, TaskCallback taskCallbackData)

+ 133 - 0
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -1569,6 +1569,139 @@ namespace IMCS.CCS.Service.Impl
         }
 
 
+        /// <summary>
+        /// 放三坐标回调任务
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> CallbackJob6()
+        {
+            List<TaskCallback> taskList = new List<TaskCallback>();
+            var taskCallbackListData = await _redisService.Database.StringGetAsync(imcs_redis_key + RedisKeyEnum.CallbackTaskList);
+            if (taskCallbackListData.IsNullOrEmpty)
+            {
+                taskList = await _taskCallbackService.GetAllList();
+            }
+            else
+            {
+                taskList = JsonConvert.DeserializeObject<List<TaskCallback>>(taskCallbackListData);
+            }
+            List<Device> deviceList = await getDeviceList();
+            //在线设备 
+            taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.SendThreeCoordinates.ToString()) && x.State && deviceList.Any(device => device.Ip == x.IP)).ToList();
+            if (taskList == null || taskList.Count == 0)
+            {
+                return "无回调任务";
+            }
+            string message = "";
+            try
+            {
+
+                foreach (TaskCallback task in taskList)
+                {
+                    CcsTagValue tagValueQuery = new CcsTagValue();
+                    tagValueQuery.Ip = task.IP;
+                    //tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
+                    CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address.Trim()).FirstOrDefault();
+
+                    // ① 比较采集的数据值与回调设置的值是否一致
+                    // ② 因为采集的值会出现时间间隔问题,所以进行与当前时间判断,如果时间过短说明上一次的状态没进行重置
+                    DateTime currentTime = DateTime.Now;
+                    if (tagValue != null && tagValue.TagValue == task.CallbackValue && currentTime.Subtract(task.CreateTime).TotalSeconds > 10)
+                    {
+                        CallBackRequestData requestData = new CallBackRequestData();
+                        requestData.taskId = long.Parse(task.TaskId);
+                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                        ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
+                        if (result.IsSuccess && responseECSCallback.code == 0)
+                        {
+                            task.State = false;
+                            task.UpdateTime = DateTime.Now;
+                            task.Description = result.Message;
+                            await _taskCallbackService.CreateOrUpdateAndCache(task);
+                            message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
+                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                        }
+                        else
+                        {
+                            task.UpdateTime = DateTime.Now;
+                            task.Description = result.Message;
+                            await _taskCallbackService.CreateOrUpdateAndCache(task);
+                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), 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);
+                            ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
+                            if (result.IsSuccess && responseECSCallback.code == 0)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                await _taskCallbackService.CreateOrUpdateAndCache(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(result), LOG_TITLE_CALLBACK);
+                            }
+                        }
+
+                    }
+                    Thread.Sleep(100);
+                }
+                return string.IsNullOrEmpty(message) ? "无回调任务" : message;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                return "回调异常" + ex.Message;
+            }
+
+        }
+
+
             /// <summary>
             /// fanuc根据类型获取值
             /// </summary>