Browse Source

新增接口及异常处理

zhuhao 2 years ago
parent
commit
9fb3e3e72c

+ 12 - 24
IMCS_CCS/Controllers/CcsController.cs

@@ -144,6 +144,17 @@ namespace IMCS.CCS.Controllers
             return await _httpRequestService.UploadFile(data);
             return await _httpRequestService.UploadFile(data);
         }
         }
 
 
+        /// <summary>
+        /// 预上传文件: POST: api/PreUploadFile
+        /// </summary> 
+        /// <returns></returns>
+        [Route("api/PreUploadFile")]
+        [HttpPost]
+        public async Task<ActionResult<ResponseECSData>> PreUploadFile(RequestData<UploadFileData> data)
+        {
+            return await _httpRequestService.PreUploadFile(data);
+        }
+
         /// <summary>
         /// <summary>
         /// 启动机床程序: POST: api/StartNCProgram
         /// 启动机床程序: POST: api/StartNCProgram
         /// </summary> 
         /// </summary> 
@@ -196,30 +207,7 @@ namespace IMCS.CCS.Controllers
         public async Task<ActionResult<ResponseECSData>> StartLabelMachine(RequestData<LabelData> data)
         public async Task<ActionResult<ResponseECSData>> StartLabelMachine(RequestData<LabelData> data)
         {
         {
             return await _httpRequestService.StartLabelMachine(data);
             return await _httpRequestService.StartLabelMachine(data);
-        }
-
-        /// <summary>
-        /// 粗偏写入: POST: api/SendLinShift
-        /// </summary> 
-        /// <returns></returns>
-        [Route("api/SendLinShift")]
-        [HttpPost]
-        public async Task<ActionResult<ResponseECSData>> SendLinShift(RequestData<SendLinShiftData> data)
-        {
-            return await _httpRequestService.SendLinShift(data);
-        }
-
-        /// <summary>
-        /// 精偏写入: POST: api/SendLinShiftFine
-        /// </summary> 
-        /// <returns></returns>
-        [Route("api/SendLinShiftFine")]
-        [HttpPost]
-        public async Task<ActionResult<ResponseECSData>> SendLinShiftFine(RequestData<SendLinShiftData> data)
-        {
-            return await _httpRequestService.SendLinShiftFine(data);
-        }
-
+        } 
         /// <summary>
         /// <summary>
         /// 伺服舵机取物品: POST: api/GetServoStacker
         /// 伺服舵机取物品: POST: api/GetServoStacker
         /// </summary> 
         /// </summary> 

+ 5 - 0
IMCS_CCS/Service/IHttpRequestService .cs

@@ -66,6 +66,11 @@ namespace IMCS.CCS.Services
         /// </summary> 
         /// </summary> 
         Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req);
         Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req);
 
 
+        /// <summary>
+        /// 预上传文件,不插入回调
+        /// </summary> 
+        Task<ResponseECSData> PreUploadFile(RequestData<UploadFileData> req);
+
         /// <summary>
         /// <summary>
         /// 启动机床程序
         /// 启动机床程序
         /// </summary> 
         /// </summary> 

+ 112 - 14
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -884,20 +884,20 @@ namespace IMCS.CCS.Services
 
 
                 }else if(deviceHeidenhain != null)
                 }else if(deviceHeidenhain != null)
                 {
                 {
-                    RequestHeidhData hdhReq = new RequestHeidhData();
-                    hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
-                    hdhReq.MachineName = deviceHeidenhain.UserName;
-                    hdhReq.Path = req.data.fileName;
-                    hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
-                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
-                    ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
-                    if (!Result.IsSuccess || !responseHeidhData.result)
-                    {
-                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req),
-                       EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
-                        responseData.result = "false";
-                        return responseData;
-                    }
+                    //RequestHeidhData hdhReq = new RequestHeidhData();
+                    //hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
+                    //hdhReq.MachineName = deviceHeidenhain.UserName;
+                    //hdhReq.Path = req.data.fileName;
+                    //hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
+                    //var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
+                    //ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
+                    //if (!Result.IsSuccess || !responseHeidhData.result)
+                    //{
+                    //    Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req),
+                    //   EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                    //    responseData.result = "false";
+                    //    return responseData;
+                    //}
 
 
                     //海德汉程序上传后,同时写入编号
                     //海德汉程序上传后,同时写入编号
                     CcsAction actionQuery = new CcsAction();
                     CcsAction actionQuery = new CcsAction();
@@ -954,6 +954,104 @@ namespace IMCS.CCS.Services
             }
             }
         }
         }
 
 
+        /// <summary>
+        /// 预上传文件,不插入回调
+        /// </summary> 
+        public async Task<ResponseECSData> PreUploadFile(RequestData<UploadFileData> req)
+        {
+            ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
+
+            try
+            {
+                List<Device> devices = _deviceService.GetDeviceAllList();
+                Device deviceFtp = devices.Where(x => x.Ip.Equals(req.url)
+                                            && x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
+                Device deviceFanuc = devices.Where(x => x.Ip.Equals(req.url)
+                                            && x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).FirstOrDefault();
+                Device deviceHeidenhain = devices.Where(x => x.Ip.Equals(req.url)
+                                            && x.ProtocolType.Equals(ProtocalTypeEnum.HEIDEHAIN.ToString())).FirstOrDefault();
+
+                if (deviceFtp == null && deviceFanuc == null && deviceHeidenhain == null)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                    responseData.result = "false";
+                    return responseData;
+                }
+                //西门子系统上传
+                if (deviceFtp != null)
+                {
+                    FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
+                    ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
+                    ftpClient.DisConnect();
+                    try
+                    {
+                        DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
+                        bool ifcon = sftp.Connect();
+                        if (ifcon)
+                        {
+                            sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
+                            sftp.Disconnect();
+                        }
+
+                    }
+                    catch (Exception exscp)
+                    {
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
+                      EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                }
+                else if (deviceFanuc != null)
+                {
+                    Regex regex = new Regex(@"^(?<fpath>([a-zA-Z]:\\)([\s\.\-\w]+\\)*)(?<fname>[\w]+)(?<namext>(\.[\w]+)*)(?<suffix>\.[\w]+)");
+                    Match result = regex.Match(req.data.fileName);
+                    string strResult = result.Success ? result.Result("${fname}") + result.Result("${suffix}") : req.data.fileName;
+
+                    string Url = fanucUrlContext + "?ip=" + deviceFanuc.Ip + "&port=" + deviceFanuc.Port + "&prgname=" + strResult;
+                    //调用发那科上传接口
+                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=" + ActionTypeEnum.UploadFile.ToString(), null, null);
+                    if (!Result.IsSuccess)
+                    {
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + Result.Message + "," + JsonConvert.SerializeObject(req),
+                     EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+
+                }
+                else if (deviceHeidenhain != null)
+                {
+                    RequestHeidhData hdhReq = new RequestHeidhData();
+                    hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
+                    hdhReq.MachineName = deviceHeidenhain.UserName;
+                    hdhReq.Path = req.data.fileName;
+                    hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
+                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
+                    ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
+                    if (!Result.IsSuccess || !responseHeidhData.result)
+                    {
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传异常===>>" + JsonConvert.SerializeObject(req),
+                       EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+
+
+                }
+                Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传成功===>>" + JsonConvert.SerializeObject(req),
+                     EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                return responseData;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                responseData.result = "false";
+                return responseData;
+            }
+        }
         /// <summary>
         /// <summary>
         /// 启动机床程序
         /// 启动机床程序
         /// </summary> 
         /// </summary> 

+ 17 - 2
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -529,8 +529,23 @@ namespace IMCS.CCS.Service.Impl
                         }
                         }
                         else
                         else
                         {
                         {
-                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
-                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
+                            //ecs返回-5 任务作废
+                            if(result.IsSuccess && responseECSCallback.code == -5)
+                            {
+                                task.State = false;
+                                task.UpdateTime = DateTime.Now;
+                                task.Description = "ecs返回-5,回调任务作废";
+                                await _taskCallbackService.CreateOrUpdateAndCache(task);
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败,ecs通知任务作废==>" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
+
+                            }
+                            else
+                            {
+                                message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                                Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
+                            }
+                           
                         }
                         }
 
 
                     }
                     }