浏览代码

fix 优化刀具列表获取

wang.sq@aliyun.com 3 月之前
父节点
当前提交
69949f44fc

+ 1 - 1
IMCS_CCS/Controllers/CcsController.cs

@@ -168,7 +168,7 @@ namespace IMCS.CCS.Controllers
         }
 
         /// <summary>
-        /// 机外对刀仪数据接受: POST: api/PushPushToMachine
+        /// 机外对刀仪的刀具数据接受: POST: api/PushPushToMachine
         /// </summary> 
         /// <returns></returns>
         [Route("api/PushPushToMachine")]

+ 68 - 1
IMCS_CCS/Entitys/RequestData.cs

@@ -294,6 +294,9 @@ namespace IMCS.CCS.Models
 
     // 机外对刀仪数据
     public class CutterTestData {
+        // 写入or删除 1写入,2删除
+        public string writeOrDel { get; set; }
+
         /*到位点*/
         public string cutterP { get; set; }
 
@@ -329,7 +332,10 @@ namespace IMCS.CCS.Models
         /*主轴定向角度*/
         public string cutterOri { get; set; }
 
-        /*刀具使用寿命*/
+        /*最长刀具寿命*/
+        public string cutterTime1 { get; set; }
+
+        /*调用刀具的最长寿命*/
         public string cutterTime2 { get; set; }
 
         /*刀具使用寿命,不允许超过该值*/
@@ -337,6 +343,67 @@ namespace IMCS.CCS.Models
 
         /*内冷开*/
         public string cutterPlcBit { get; set; }
+
+
+        /*在刀具轴方向上的刀齿长*/
+        private string lcuts { get; set; }
+
+
+        /*准确定义刀具的切削刃正面宽度*/
+        private string rcuts { get; set; }
+
+
+        /*准确定义刀具的刀具可用长度*/
+        private string lu { get; set; }
+
+
+        /*准确定义刀具的刀颈半径*/
+        private string rn { get; set; }
+
+
+        /*最大的切入角度*/
+        private string angle { get; set; }
+
+
+        /*最高速度*/
+        private string nmax { get; set; }
+
+
+        /*刀具长度1的差值*/
+        private string dzl { get; set; }
+
+
+        /*刀具长度2的差值*/
+        private string dxl { get; set; }
+
+
+        /*刀具长3的差值*/
+        private string dyl { get; set; }
+
+
+        /*刀具半径的差值*/
+        private string drs { get; set; }
+
+
+        /*开槽刀宽度的差值*/
+        private string dcw { get; set; }
+
+
+        /*下刀角*/
+        private string tangle { get; set; }
+
+
+        /*刀尖角*/
+        private string pangle { get; set; }
+
+
+        /*切槽刀的切削长度*/
+        private string cutlength { get; set; }
+
+
+        /*槽加工刀宽度*/
+        private string cutwidth { get; set; }
+
     }
 
     public class ThreeDimensional

+ 6 - 1
IMCS_CCS/IMCS.CCS.xml

@@ -273,7 +273,7 @@
         </member>
         <member name="M:IMCS.CCS.Controllers.CcsController.PushPushToMachine(IMCS.CCS.Models.RequestData{IMCS.CCS.Models.CutterTestData})">
             <summary>
-            机外对刀仪数据接受: POST: api/PushPushToMachine
+            机外对刀仪的刀具数据接受: POST: api/PushPushToMachine
             </summary> 
             <returns></returns>
         </member>
@@ -1218,6 +1218,11 @@
             刀具半径
             </summary>
         </member>
+        <member name="P:IMCS.CCS.Models.vo.ResponseToolData.tl">
+            <summary>
+            刀具锁定
+            </summary>
+        </member>
         <member name="T:IMCS.CCS.Filter.ApiExceptionFilter">
             <summary>
             异常过滤器

+ 2 - 1
IMCS_CCS/Model/vo/ResponseECSData.cs

@@ -17,7 +17,8 @@ namespace IMCS.CCS.Models.vo
 
         public string concurrency { get; set; } = "false";
 
-        public string data { get; set; } 
+        public string data { get; set; }
+        public string returnData { get; set; }
         public ResponseECSData(string taskID,string taskNodeID)
         {
             this.taskID = taskID;

+ 5 - 0
IMCS_CCS/Model/vo/ResponseToolData.cs

@@ -82,5 +82,10 @@ namespace IMCS.CCS.Models.vo
         /// </summary>
         public string toolRadius { get; set; }
 
+        /// <summary>
+        /// 刀具锁定
+        /// </summary>
+        public string tl { get; set; }
+
     }
 }

+ 77 - 11
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -25,6 +25,7 @@ using IMCS_CCS.Service.Impl;
 using IMCS_CCS.Service;
 using IMCS_CCS.Entitys;
 using static Google.Protobuf.Reflection.SourceCodeInfo.Types;
+using Newtonsoft.Json.Linq;
 
 namespace IMCS.CCS.Services
 {
@@ -46,7 +47,7 @@ namespace IMCS.CCS.Services
 
         private readonly ICcsActionDeviceSourceCheckService _ccsActionDeviceSourceCheckService;
 
-        private int SLEEP_TIME = 1000;
+        private int SLEEP_TIME = 100;
 
         string LocalPath = "D:\\PROG";
 
@@ -413,11 +414,31 @@ namespace IMCS.CCS.Services
                 {
                     if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
                     {
-                        string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
+
+
+
+                        string operateResult = "";
+                        if (actionAddress.AddressType.Equals(TagValueReadTypeEnum.BOOL.ToString()))
+                        {
+                            operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
+                        }
+                        else if (actionAddress.AddressType.Equals(TagValueReadTypeEnum.SHORT.ToString()))
+                        {
+                            operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
+                        }
+                        else if (actionAddress.AddressType.Equals(TagValueReadTypeEnum.String.ToString()))
+                        {
+                            operateResult = s7.ReadString(actionAddress.Address).Content.ToString();
+                        }
+                        else if (actionAddress.AddressType.Equals(TagValueReadTypeEnum.Byte.ToString()))
+                        {
+                            operateResult = s7.ReadByte(actionAddress.Address).Content.ToString();
+                        }
+
                         if (actionAddress.CheckType ? operateResult != actionAddress.Value : operateResult == actionAddress.Value)
                         {
                             s7.ConnectClose();
-                            Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "条件不满足" + actionAddress.Address + "值应为:" + actionAddress.Value + "====实际为:" + operateResult + JsonConvert.SerializeObject(req),
+                            Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "条件不满足" + actionAddress.Address + "值应为:" + actionAddress.Value + "====实际为:" + operateResult +",要查询的参数"+ JsonConvert.SerializeObject(actionAddress) +", 请求参数"+ JsonConvert.SerializeObject(req),
                             EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
                             responseData.result = "false";
                             responseData.resultMsg = "异常===>>" + "条件不满足" + actionAddress.Address + "值应为:" + actionAddress.Value + "==实际为:" + operateResult;
@@ -797,7 +818,7 @@ namespace IMCS.CCS.Services
         /// <returns></returns>
         public async Task<ResponseECSData> CutterDeviceTakeOrPutRequest(RequestData<CutterLocationData> req)
         {
-            Log.Instance.WriteLogAdd("查询刀具上下料站、机床刀具位是否允许放===>> " + JsonConvert.SerializeObject(req), "刀具取放状态");
+            Log.Instance.WriteLogAdd("CNC刀具库请求上下料动作===>> " + JsonConvert.SerializeObject(req), "CNC刀具库请求上下料动作");
 
             ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId, "执行成功");
             SiemensS7Net s7 = null;
@@ -875,11 +896,19 @@ namespace IMCS.CCS.Services
 
                             string before = "EMPTY00000";
                             if (req.data.Location != null && req.data.Location.Length>0) {
-                                before = "ATC00" + req.data.LocationNo + req.data.Location.Substring(7, 3);
+
+                                int separatorIndex = req.data.LocationNo.IndexOf(".");
+                                string substring = req.data.LocationNo.Substring(separatorIndex+1); // 从第7个字符开始截取5个字符
+
+                                before = "ATC00" + substring + req.data.Location.Substring(7, 3);
                             }
                             string theTail = "EMPTY00000";
                             if (req.data.DestLocation != null && req.data.DestLocation.Length>0) {
-                                theTail = "ATC00" + req.data.DestLocationNo + req.data.DestLocation.Substring(7, 3);
+
+                                int separatorIndex = req.data.DestLocationNo.IndexOf(".");
+                                string substring = req.data.DestLocationNo.Substring(separatorIndex+1); // 从第7个字符开始截取5个字符
+
+                                theTail = "ATC00" + substring + req.data.DestLocation.Substring(7, 3);
                             }
                             parValue = before + theTail;
 
@@ -1294,8 +1323,15 @@ namespace IMCS.CCS.Services
         {
             List<Device> devices = _deviceService.GetDeviceList();
 
-            Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
+            List<Device> deviceList = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).ToList();
+
+            if (deviceList ==null || deviceList.Count <= 0) {
+                throw new InvalidOperationException("没查询到设备数据");
+            }
+
+            Device device = deviceList.FirstOrDefault();
             List<ResponseToolData> list = new List<ResponseToolData>();
+
             if (device.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
             {
                 CcsTagValue tagValueQuery = new CcsTagValue();
@@ -1543,16 +1579,28 @@ namespace IMCS.CCS.Services
 
                     var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
                     ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
+                    JObject jsonObject = JObject.Parse(Result.Message);
+                    
                     if (!Result.IsSuccess || !responseHeidhData.result)
                     {
                         Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "机外对刀仪数据上传异常===>>" + JsonConvert.SerializeObject(req)+"======结果数据:"+ Result, "机外对刀仪");
                         responseData.result = "false";
-                        responseData.resultMsg = Result.Message;
+                        responseData.resultMsg = jsonObject.GetValue("msg").ToString();
                     }
                     else
                     {
-                        responseData.result = "true";
-                        responseData.resultMsg = "消费成功";
+ 
+                        if (jsonObject.GetValue("result")!=null  && bool.Parse(jsonObject.GetValue("result").ToString())) { 
+                            responseData.result = "true";
+                            responseData.resultMsg = jsonObject.GetValue("msg").ToString();
+                            responseData.returnData = jsonObject.GetValue("returnData").ToString();
+
+                        }
+                        else {
+                            Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "机外对刀仪数据上传异常===>>" + JsonConvert.SerializeObject(req) + "======结果数据:" + Result, "机外对刀仪");
+                            responseData.result = "false";
+                            responseData.resultMsg = jsonObject.GetValue("msg").ToString();
+                        }
                     }
                 }
                 else {
@@ -1661,10 +1709,13 @@ namespace IMCS.CCS.Services
                     }
                 }
 
+                //  关闭连接
+                s7.ConnectClose();
+
             }
             catch (Exception ex)
             {
-
+                s7.ConnectClose();
                 Log.Instance.WriteLogAdd(ActionTypeEnum.ThreeDimensionalTakeStatus + "任务下发异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
                     EnumHelper.GetDescription(ActionTypeEnum.ThreeDimensionalTakeStatus));
                 responseData.result = "false";
@@ -1762,9 +1813,14 @@ namespace IMCS.CCS.Services
                     }
                 }
 
+                //  关闭连接
+                s7.ConnectClose();
+
             }
             catch (Exception ex)
             {
+                //  关闭连接
+                s7.ConnectClose();
 
                 Log.Instance.WriteLogAdd(ActionTypeEnum.ThreeDimensionalPutStatus + "任务下发异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
                     EnumHelper.GetDescription(ActionTypeEnum.ThreeDimensionalPutStatus));
@@ -2140,9 +2196,14 @@ namespace IMCS.CCS.Services
                     }
                 }
 
+                //  关闭连接
+                s7.ConnectClose();
+
             }
             catch (Exception ex)
             {
+                //  关闭连接
+                s7.ConnectClose();
 
                 Log.Instance.WriteLogAdd("CutterTake" + req.data.location + "任务下发异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
                     "刀具取放状态");
@@ -2304,10 +2365,15 @@ namespace IMCS.CCS.Services
                     }
                 }
 
+                //  关闭连接
+                s7.ConnectClose();
+
             }
             catch (Exception ex)
             {
 
+                //  关闭连接
+                s7.ConnectClose();
                 Log.Instance.WriteLogAdd("CutterPut" + req.data.location + "任务下发异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
                     "刀具取放状态");
                 responseData.result = "false";

+ 40 - 34
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -1716,51 +1716,57 @@ namespace IMCS.CCS.Service.Impl
                 list = JsonConvert.DeserializeObject<List<TaskCallback>>(taskCallbackListData);
             }
 
-            TaskCallback task = list.Where(x => x.OperateType.Equals(ActionTypeEnum.WriteDeviationValue.ToString())).FirstOrDefault();
-            if (task == null)
+            List<TaskCallback> tasks = list.Where(x => x.OperateType.Equals(ActionTypeEnum.WriteDeviationValue.ToString())).ToList();
+            if (tasks.Count <=0)
             {
                 return "无回调任务";
             }
-            string message = "";
-            try
-            {
 
-                DateTime currentTime = DateTime.Now;
-                if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
+            // 对于多个偏移量设置回调
+            foreach (var task in tasks)
+            {
+                string message = "";
+                try
                 {
-                    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
+
+                    DateTime currentTime = DateTime.Now;
+                    if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
                     {
-                        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);
+                        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);
+                        }
+
                     }
 
+                    return string.IsNullOrEmpty(message) ? "无回调任务" : message;
+                }
+                catch (Exception ex)
+                {
+                    Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                    return "回调异常" + ex.Message;
                 }
-
-                return string.IsNullOrEmpty(message) ? "无回调任务" : message;
-            }
-            catch (Exception ex)
-            {
-                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
-                return "回调异常" + ex.Message;
             }
 
+            return "回调异常";
 
         }
 

+ 9 - 7
IMCS_CCS/appsettings.json

@@ -10,20 +10,22 @@
   "TokenKey": "Authorization",
   "TokenValue": "123456",
   "JwtKeyName": "JwtKeyName",
-  "JwtSecurityKey": "1CC76841-F25D-4389-89FE-0F9451163CF1", 
+  "JwtSecurityKey": "1CC76841-F25D-4389-89FE-0F9451163CF1",
   "DbPath": {
     "Project": "/db/Projects.json",
     "Tasks": "/db/Tasks.json"
-  }, 
-  "UseRedis": "0",  
+  },
+  "UseRedis": "0",
   "RedisDbPath": {
     "Project": "IMCS.CCS:Project",
     "Tasks": "IMCS.CCS:Tasks"
-  },  
-  "RedisConnectionString": "127.0.0.1:6379,password=123456,defaultDatabase=0",
+  },
+  //"RedisConnectionString": "192.168.0.106:6379,password=123456,defaultDatabase=0",
+  "RedisConnectionString": "192.168.50.111:6379,password=123456,defaultDatabase=0",
   "ConnectionStrings": {
-    "mysqlContext": "server=192.168.0.106;port=3306;database=ccs_331;uid=root;pwd=1qaz@WSX;CharSet=utf8;Allow Zero Datetime=True",
-    "ecsUrlContext": "http://192.168.0.106:80/api/authority/taskNode/taskNodeCallback",
+    "mysqlContext": "server=127.0.0.1;port=3306;database=ccs_331;uid=root;pwd=123456;CharSet=utf8;Allow Zero Datetime=True",
+    "ecsUrlContext": "http://localhost:80/api/authority/taskNode/taskNodeCallback",
+    //"ecsUrlContext": "http://localhost:9099/api/authority/taskNode/taskNodeCallback",
     //"FTPServer": "192.168.170.25",
     //"FTPUser": "PROG",
     //"FTPPwd": "abc.1234",

文件差异内容过多而无法显示
+ 0 - 0
IMCS_CCS/wwwroot/db/Tasks.json


部分文件因为文件数量过多而无法显示