소스 검색

设备状态及哈默上传修改

zhuhao 2 년 전
부모
커밋
fb83c1d698
2개의 변경된 파일60개의 추가작업 그리고 46개의 파일을 삭제
  1. 44 35
      IMCS_CCS/Service/Impl/HttpRequestService.cs
  2. 16 11
      IMCS_CCS/Service/Impl/TaskJobService.cs

+ 44 - 35
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -899,44 +899,53 @@ namespace IMCS.CCS.Services
                     //    return responseData;
                     //}
 
-                    //海德汉程序上传后,同时写入编号
-                    CcsAction actionQuery = new CcsAction();
-                    actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
-                    actionQuery.Ip = req.url;
-                    CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
-                    //查询启动动作地址
-                    CcsActionAddress actionAddressQuery = new CcsActionAddress();
-                    actionAddressQuery.ActionId = actionInfo.Id;
-                    List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
-
-                    SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
-                    OperateResult ConnectionResult = s7.ConnectServer();
-                    if (!ConnectionResult.IsSuccess)
-                    {
-                        s7.ConnectClose();
-                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "写入编号异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
-                        EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
-                        responseData.result = "false";
-                        return responseData;
-                    } 
-
-                    //查询写入地址列表
-                    List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
-                    if (CcsActionAddressWrites.Count < 2)
+                    //海德汉程序上传后,同时写入编号 
+                    if (string.IsNullOrEmpty(req.data.fileName))
                     {
-                        s7.ConnectClose();
-                        Log.Instance.WriteLogAdd("写入程序编号异常===>>" + "地址错误" + JsonConvert.SerializeObject(req),
-                        EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
-                        responseData.result = "false";
-                        return responseData;
+                        Log.Instance.WriteLogAdd("ECS编号传空不处理逻辑===>>" + req.data.fileName ,
+                         EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
                     }
-                    //写入程序编号  
-                   // string prgNo = !string.IsNullOrEmpty(req.data.fileName) ? req.data.fileName.Substring(0, req.data.fileName.Length - 2) : CcsActionAddressWrites[0].Value;
-                    string prgNo = !string.IsNullOrEmpty(req.data.fileName) ? System.IO.Path.GetFileNameWithoutExtension(req.data.fileName) : CcsActionAddressWrites[0].Value;
-                    s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(prgNo));
+                    else
+                    { //写入程序编号  
+                        CcsAction actionQuery = new CcsAction();
+                        actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
+                        actionQuery.Ip = req.url;
+                        CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
+                        //查询启动动作地址
+                        CcsActionAddress actionAddressQuery = new CcsActionAddress();
+                        actionAddressQuery.ActionId = actionInfo.Id;
+                        List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
+
+                        SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
+                        OperateResult ConnectionResult = s7.ConnectServer();
+                        if (!ConnectionResult.IsSuccess)
+                        {
+                            s7.ConnectClose();
+                            Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "写入编号异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
+                            EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                            responseData.result = "false";
+                            return responseData;
+                        }
 
-                    Log.Instance.WriteLogAdd("写入编号成功===>>编号位:"  + prgNo + ",写入地址=="+ CcsActionAddressWrites[0].Address,
-                     EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                        //查询写入地址列表
+                        List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
+                        if (CcsActionAddressWrites.Count < 2)
+                        {
+                            s7.ConnectClose();
+                            Log.Instance.WriteLogAdd("写入程序编号异常===>>" + "地址错误" + JsonConvert.SerializeObject(req),
+                            EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                            responseData.result = "false";
+                            return responseData;
+                        }
+
+                        string prgNo = !string.IsNullOrEmpty(req.data.fileName) ? System.IO.Path.GetFileNameWithoutExtension(req.data.fileName) : CcsActionAddressWrites[0].Value;
+                        s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(prgNo));
+
+                        Log.Instance.WriteLogAdd("写入编号成功===>>编号位:" + prgNo + ",写入地址==" + CcsActionAddressWrites[0].Address,
+                         EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                    }
+                   
+                   
                 }
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),

+ 16 - 11
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -1443,9 +1443,19 @@ namespace IMCS.CCS.Service.Impl
             try
             {
                 string message = "";
-                List<Device> devices = await getDeviceList();
-                //在线设备
-                List<Device> changeDevices = new List<Device>();  
+                string all_device_redis_key = "IMCS_CCS:ALLDeviceList";
+                List<Device> devices = new List<Device>();
+                //查询全部设备包括在线和不在线
+                var deviceListData = await _redisService.Database.StringGetAsync(all_device_redis_key);
+                if (deviceListData.IsNullOrEmpty)
+                {
+                    devices = _deviceService.GetDevices();
+                    await _redisService.Database.StringSetAsync(device_redis_key, JsonConvert.SerializeObject(devices));
+                }
+                else
+                {
+                    devices = JsonConvert.DeserializeObject<List<Device>>(deviceListData);
+                } 
 
                 //ftp不监控
                 devices = devices.Where(x => !x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).ToList();
@@ -1459,8 +1469,7 @@ namespace IMCS.CCS.Service.Impl
                         if (oldDevice != null && oldDevice.State)
                         {
                             device.State = false;
-                            await _deviceService.UpdateDevice(device);
-                            changeDevices.Add(device);
+                            await _deviceService.UpdateAndCache(device); 
                         }
 
                         Log.Instance.WriteLogAdd(device.Ip + ":" + device.ProtocolType + "连接失败,或已离线", LOG_TITLE_DEVICE);
@@ -1473,8 +1482,7 @@ namespace IMCS.CCS.Service.Impl
                         if (oldDevice != null && !oldDevice.State)
                         {
                             oldDevice.State = true;
-                            await _deviceService.UpdateDevice(oldDevice);
-                            changeDevices.Add(device);
+                            await _deviceService.UpdateAndCache(oldDevice); 
                         }
                         Log.Instance.WriteLogAdd(device.Ip + ":"+ device.ProtocolType +  "连接成功", LOG_TITLE_DEVICE);
                         message = message + ",plc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
@@ -1483,10 +1491,7 @@ namespace IMCS.CCS.Service.Impl
                     Thread.Sleep(50);
                    
                 }
-                if (changeDevices != null)
-                {
-                    await _redisService.Database.StringSetAsync(device_redis_key, JsonConvert.SerializeObject(devices));
-                }
+                
                 return message;
             }
             catch (Exception ex)