oyq28 9 maanden geleden
bovenliggende
commit
592a024dfc
1 gewijzigde bestanden met toevoegingen van 113 en 0 verwijderingen
  1. 113 0
      WCS/Service/Impl/TTaskService.cs

+ 113 - 0
WCS/Service/Impl/TTaskService.cs

@@ -0,0 +1,113 @@
+using WCS.DeviceProtocol;
+using WCS.Repository;
+using Microsoft.EntityFrameworkCore;
+using Newtonsoft.Json;
+using WCS.Common;
+using WCS.Entitys;
+using WCS.Model;
+using WCS.Services;
+using HslCommunication.Profinet.Siemens;
+using HslCommunication;
+using WCS.Utils;
+using IMCS.CCS.Services;
+namespace WCS.Service.Impl
+{
+    public class TTaskService : ITTaskService
+    {
+        private readonly IDeviceRepository deviceRepository;
+        private readonly IWcsActionService wcsActionService;
+        private readonly IWcsActionAddressService wcsActionAddressService;
+        private readonly ITaskCallbackService taskCallbackService;
+
+
+
+
+        public TTaskService(IDeviceRepository deviceRepository, IWcsActionService wcsActionService,IWcsActionAddressService wcsActionAddressService, ITaskCallbackService taskCallbackService) {
+            this.deviceRepository = deviceRepository;
+            this.wcsActionService = wcsActionService;
+            this.wcsActionAddressService = wcsActionAddressService;
+            this.taskCallbackService = taskCallbackService;
+        }
+
+
+
+
+        public async Task<ResponseData> ExcuteTask(RequestData<LocationData> data)
+        {
+            ResponseData responseData=new ResponseData(data.taskNodeId);
+            try
+            {
+                List<WcsDevice> devices =  deviceRepository.GetDeviceList();
+
+                WcsDevice? wcsDevice = devices.FirstOrDefault(x => x.Ip == data.ip);
+                //WcsDevice device = devices.Where(x => x.Ip == data.url && x.Port == data.port).FirstOrDefault();
+
+
+                if (wcsDevice == null)
+                {
+                    Log.Instance.WriteLogAdd("设备已离线===>>" + JsonConvert.SerializeObject(data));
+                    responseData.IsSuccess = false;
+                    return responseData;
+                }
+
+                WcsAction action = new WcsAction();
+                action.Ip = data.ip;
+                action.OperateType= data.data.operateType.ToString();
+                WcsAction? actionInfo = wcsActionService.GetList(action).FirstOrDefault();
+
+                if (actionInfo == null)
+                {
+                    Log.Instance.WriteLogAdd(data.data.operateType.ToString() + "异常===>>" + "找不到对应实例" + JsonConvert.SerializeObject(data),
+                    EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType));
+                    responseData.IsSuccess = false;
+                    return responseData;
+                }
+
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.Ip);
+                OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd(data.data.operateType.ToString() + "异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(data),
+                    EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType));
+                    responseData.IsSuccess = false;
+                    return responseData;
+                }
+                WcsActionAddress actionAddressQuery = new WcsActionAddress();
+                actionAddressQuery.ActionId = actionInfo.Id;
+                actionAddressQuery.Sort=data.data.type;
+                WcsActionAddress? WcsActionAddresses = wcsActionAddressService.GetList(actionAddressQuery).FirstOrDefault();
+                if(WcsActionAddresses!=null && data.data.type == 0)
+                {
+                    s7.Write(WcsActionAddresses.Address, data.data.startPosition);
+                }else if(WcsActionAddresses != null && data.data.type == 1)
+                {
+                    s7.Write(WcsActionAddresses.Address, data.data.endPosition);
+                }
+                s7.ConnectClose();
+
+                //插入回调
+                TaskCallback taskCallbackData = new TaskCallback(data.url, data.data.operateType.ToString(),
+                     EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType), data.taskId, data.taskNodeId);
+                //taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
+
+                await taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
+                Log.Instance.WriteLogAdd(EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType) + "成功===>>" + JsonConvert.SerializeObject(data)
+                   , EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType));
+
+                return responseData;
+
+
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd(data.data.operateType + "异常===>>" + ex.Message + JsonConvert.SerializeObject(data),
+                   EnumHelper.GetEnumDescription<WcsActionType>(data.data.operateType));
+                responseData.IsSuccess = false;
+                return responseData;
+            }
+
+
+        }
+    }
+}