Quellcode durchsuchen

RFID不一致报警
获取千机质检结果

oyq28 vor 5 Monaten
Ursprung
Commit
7dfdaaebdd

+ 4 - 1
IMCS_CCS/Model/vo/RequestOpcUaData.cs

@@ -35,6 +35,8 @@ namespace IMCS_CCS.Model.vo
 
         public string prgName
         { get; set; }
+        public string check
+        { get; set; }
 
         /// <summary>
         /// 子文件集合
@@ -101,6 +103,7 @@ namespace IMCS_CCS.Model.vo
         SetTool,
         DeleteOrSetTool,
         ToolNoData,
-        UploadFileList
+        UploadFileList,
+        Collect
     }
 }

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

@@ -28,11 +28,15 @@ using Flurl.Util;
 using HslCommunication.Enthernet;
 using MySqlX.XDevAPI.Common;
 using Newtonsoft.Json.Linq;
+using StackExchange.Redis;
+using IMCS.CCS.Common.Redis;
 
 namespace IMCS.CCS.Services
 {
     public class HttpRequestService : IHttpRequestService
     {
+        private readonly IRedisService _redisService;
+
         private readonly IDeviceService _deviceService;
 
         private readonly ITaskCallbackService _taskCallbackService;
@@ -67,12 +71,17 @@ namespace IMCS.CCS.Services
 
         private static Dictionary<string, string> ipDict = new Dictionary<string, string>();
 
-        public HttpRequestService(IDeviceService deviceService, ITaskCallbackService taskCallbackService,
+        private static List<string> jList = new List<string>();
+
+        private static Dictionary<string, string> jIp = new Dictionary<string, string>();
+
+        public HttpRequestService(IRedisService redisService, IDeviceService deviceService, ITaskCallbackService taskCallbackService,
                                   ICcsActionService ccsActionService, ICcsTagValueService ccsTagValueService,
                                   IEquipmentMonitorService equipmentMonitorService, ICcsActionAddressService ccsActionAddressService,
                                   IApiRequestService apiRequestService, ITaskJobService taskJobService,
                                   IConfiguration configuration)
         {
+            _redisService = redisService;
             _deviceService = deviceService;
             _taskCallbackService = taskCallbackService;
             _ccsActionService = ccsActionService;
@@ -116,6 +125,20 @@ namespace IMCS.CCS.Services
                 ipDict.Add("10.161.30.246", "DB1.118");
                 ipDict.Add("10.161.30.247", "DB1.120");
             }
+            if (jList.Count == 0)
+            {
+                jList.Add("1");
+                jList.Add("2");
+                jList.Add("3");
+            }
+            if (jIp.Count == 0)
+            {
+                Console.WriteLine("jIp:" + jIp.Count);
+                jIp.Add("1","10.161.30.245");
+                jIp.Add("2","10.161.30.246");
+                jIp.Add("3","10.161.30.247");
+            }
+
         }
 
         /// <summary>
@@ -549,6 +572,41 @@ namespace IMCS.CCS.Services
                 await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.RobotAction) + "操作成功===>>" + JsonConvert.SerializeObject(req)
                    , EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
+
+                //try catch 包起来不影响正常流程
+                try
+                {
+                    //下发任务成功后,查询千机质检结果
+                    //如果源目标为是机床,才去查询
+                    if (jList.Contains(req.data.location))
+                    {
+                        RequestOpcUaData deviceReq = new RequestOpcUaData();
+                        deviceReq.ServerUrl = "opc.tcp://" + jIp[req.data.location] + ":4840";
+                        deviceReq.UserName = "OpcUaClient";
+                        deviceReq.Password = "12345678";
+                        deviceReq.Type = OpcUaActionTypeEnum.Collect.ToString();
+                        deviceReq.Ip = jIp[req.data.location];
+                        deviceReq.check = "1";
+                        var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, mazakUrlContext, deviceReq, null);
+                        ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
+                        if (!Result.IsSuccess || !responseOpcUaData.result)
+                        {
+                            if (responseOpcUaData.values != null)
+                            {
+                                await _redisService.Database.StringSetAsync("QJ:" + req.taskNodeId, responseOpcUaData.values[0]);
+                            }
+                            Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "查询千机质检结果===>>" + JsonConvert.SerializeObject(responseOpcUaData),
+                       EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
+
+                        }
+                    }
+                }catch(Exception e)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "查询千机质检结果异常===>>" + e.StackTrace + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
+                }
+                
+
                 return responseData;
             }
             catch (Exception ex)

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

@@ -87,6 +87,8 @@ namespace IMCS.CCS.Service.Impl
 
         private string RFID = "RFID:";
 
+        private string RFIDWARN = "RFIDWARN:";
+
         private string LOG_RESOURCE_STATE = "设备状态";
 
         private static List<string> sList = new List<string>();
@@ -327,6 +329,7 @@ namespace IMCS.CCS.Service.Impl
                     requestData.taskId = long.Parse(task.TaskId);
                     requestData.taskNodeId = long.Parse(task.TaskNodeId);
                     var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                    Log.Instance.WriteLogAdd(requestData.taskNodeId + "回调请求结果:" + result, LOG_TITLE_CALLBACK);
                     ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
                     if (result.IsSuccess && responseECSCallback.code == 0)
                     {
@@ -432,6 +435,9 @@ namespace IMCS.CCS.Service.Impl
                     plcS7.ConnectClose();
                     rfid.success = false;
                     rfid.msg = task.Id + ":RFID托盘校验失败,imcs和RFID托盘信息不一致";
+
+                    await _redisService.Database.StringSetAsync(RFIDWARN + "trayNo", task.TaskNodeId+":读取imcs_redis数据_" + JsonConvert.SerializeObject(imcsRfid) + ",读取RFID数据_" + readResult.ToString());
+
                     return rfid;
                 }
                 
@@ -661,9 +667,14 @@ namespace IMCS.CCS.Service.Impl
                         // 任务执行完毕,删除临时存储的缓存数据
                         Console.WriteLine("任务执行完成,删除临时校验的缓存数据,任务状态"+task.CallbackValue+"==taskID:"+ task.TaskId+"==taskNodeID:"+ task.TaskNodeId);
                         await _redisService.Database.KeyDeleteAsync(RFID + task.TaskId + task.TaskNodeId);
+                        await _redisService.Database.KeyDeleteAsync(RFIDWARN + "trayNo");     
+                        
+                        
+
+
 
                         //执行位清零
-                      
+
                         if (ConnectionResult.IsSuccess)
                         {
                             string plcRead = s7.ReadInt16("DB1.16").Content.ToString();
@@ -691,6 +702,7 @@ namespace IMCS.CCS.Service.Impl
                         requestData.taskNodeId = long.Parse(task.TaskNodeId);
 
                         var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                        Log.Instance.WriteLogAdd(requestData.taskNodeId + "回调请求结果:" + result, LOG_TITLE_CALLBACK);
                         ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
                         if (result.IsSuccess && responseECSCallback.code == 0)
                         {
@@ -783,7 +795,7 @@ namespace IMCS.CCS.Service.Impl
             }
             catch (Exception ex)
             {
-                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                Log.Instance.WriteLogAdd("回调异常===>>" + ex.StackTrace+","+ex.Message, LOG_TITLE_CALLBACK);
                 return "回调异常" + ex.Message;
             }
         }