123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Threading;
- using IMCS.CCS.Entitys;
- using IMCS.CCS.Models.vo;
- using IMCS.CCS.Models;
- using IMCS.CCS.DeviceProtocol;
- using System;
- using S7.Net;
- using IMCS_CCS.Utils;
- using IMCS_CCS.Utils.DeviceProtocol;
- using HslCommunication.Profinet.Siemens;
- using Microsoft.Extensions.Configuration;
- using IMCS.CCS.Service;
- using IMCS_CCS.Model.vo;
- using FTP;
- using HslCommunication;
- using System.Text.RegularExpressions;
- using System.IO;
- using System.Reflection;
- using Newtonsoft.Json;
- namespace IMCS.CCS.Services
- {
- public class HttpRequestService : IHttpRequestService
- {
- private readonly IDeviceService _deviceService;
- private readonly ITaskCallbackService _taskCallbackService;
- private readonly ICcsActionService _ccsActionService;
- private readonly ICcsTagValueService _ccsTagValueService;
- private readonly IEquipmentMonitorService _equipmentMonitorService;
- private readonly ICcsActionAddressService _ccsActionAddressService;
- private readonly ITaskJobService _taskJobService;
- private int SLEEP_TIME = 1000;
- string LocalPath = "D:\\PROG";
- private string mazakUrlContext;
- private string ecsRootUrlContext;
- public IConfiguration Configuration { get; }
- private readonly IApiRequestService _apiRequestService;
- public HttpRequestService(IDeviceService deviceService, ITaskCallbackService taskCallbackService,
- ICcsActionService ccsActionService, ICcsTagValueService ccsTagValueService,
- IEquipmentMonitorService equipmentMonitorService, ICcsActionAddressService ccsActionAddressService,
- IApiRequestService apiRequestService, ITaskJobService taskJobService,
- IConfiguration configuration)
- {
- _deviceService = deviceService;
- _taskCallbackService = taskCallbackService;
- _ccsActionService = ccsActionService;
- _ccsTagValueService = ccsTagValueService;
- _equipmentMonitorService = equipmentMonitorService;
- _ccsActionAddressService = ccsActionAddressService;
- _apiRequestService = apiRequestService;
- _taskJobService = taskJobService;
- Configuration = configuration;
- mazakUrlContext = Configuration.GetConnectionString("mazakUrlContext");
- ecsRootUrlContext = Configuration.GetConnectionString("ecsRootUrlContext");
- }
- /// <summary>
- /// 获取状态当前值
- /// </summary>
- public string GetTagValue(RequestTagValueData req)
- {
- CcsTagValue queryParam = new CcsTagValue();
- queryParam.Ip = req.ip;
- queryParam.Address = req.tagname;
- List<CcsTagValue> tagValues = _ccsTagValueService.GetList(queryParam);
- string tagValue = "0";
- if (tagValues != null && tagValues.Count > 0)
- {
- tagValue = tagValues[0].TagValue;
- }
- return tagValue;
- }
- /// <summary>
- /// 益模调用接口,显示3D
- /// </summary>
- public async Task<List<ResponseDigitalTwinsData>> GetDigitalTwins()
- {
- List<Device> devices = _deviceService.GetDeviceList();
- List<ResponseDigitalTwinsData> list = new List<ResponseDigitalTwinsData>();
- String query3dUrl = ecsRootUrlContext + "/api/authority/agv/agvCallbackService/query3dResouceDataInfo";
- var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, query3dUrl, new Object(), null);
- ResponsePageData<ResponseDigitalTwinsData> responseData = JsonConvert.DeserializeObject<ResponsePageData<ResponseDigitalTwinsData>>(result.Message);
- list = responseData.Data;
-
- return list;
- }
- /// <summary>
- /// 查询设备状态
- /// </summary>
- public async Task<List<EquipmentMonitor>> GetEquipMent()
- {
- return await _equipmentMonitorService.GetList();
- }
-
- /// <summary>
- /// 机器人取放动作
- /// </summary>
- public async Task<ResponseECSData> RobotAction(RequestData<LocationData> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- try
- {
- List<Device> devices = _deviceService.GetDeviceList();
- Device device = devices.Where(x => x.Ip == req.url && x.Port == req.port).FirstOrDefault();
- if (device == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- responseData.result = "false";
- return responseData;
- }
- CcsAction actionQuery = new CcsAction();
- actionQuery.OperateType = ActionTypeEnum.RobotAction.ToString();
- actionQuery.Ip = req.url;
- CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.Ip);
- OperateResult ConnectionResult = s7.ConnectServer();
- if (!ConnectionResult.IsSuccess)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- responseData.result = "false";
- return responseData;
- }
- CcsActionAddress actionAddressQuery = new CcsActionAddress();
- actionAddressQuery.ActionId = actionInfo.Id;
- List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
- //查询条件
- List<CcsActionAddress> CcsActionAddressChecks = new List<CcsActionAddress>();
- if (req.data.taskType == "1" && (req.data.destLocation == "30" || req.data.destLocation == "900")) //取料
- {
- CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK_GET.ToString()).ToList();
- }
- else if (req.data.taskType == "1" && (req.data.destLocation != "30" && req.data.destLocation != "900")) //放料
- {
- CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK_SEND.ToString()).ToList();
- }
- foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
- {
- string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if (actionAddress.CheckType ? operateResult != actionAddress.Value : operateResult == actionAddress.Value)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- responseData.result = "false";
- return responseData;
- }
- }
- }
-
- //查询写入地址列表
- List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- //string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
-
- if (string.IsNullOrEmpty(actionAddress.Value))
- {
- //取参数传参值
- string dataValue = getProperties(req.data, actionAddress.Description);
- if (!string.IsNullOrEmpty(dataValue))
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(dataValue));
- }
- }
- else
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
- }
- //同步更新数据库状态
- //CcsTagValue tagValueQuery = new CcsTagValue();
- //tagValueQuery.Ip = req.url;
- //tagValueQuery.Address = actionAddress.Address;
- //CcsTagValue tagValue = _ccsTagValueService.GetList(tagValueQuery).ToList().FirstOrDefault();
- //if(tagValue != null)
- //{
- // tagValue.TagValue = actionAddress.Value;
- // await _ccsTagValueService.Update(tagValue);
- //}
- Thread.Sleep(SLEEP_TIME);
- }
- }
- List<CcsActionAddress> CcsActionAddressWriteChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).ToList();
- bool checkFlag = true;
- foreach (CcsActionAddress actionAddress in CcsActionAddressWriteChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- //取参数传参值
- string dataValue = getProperties(req.data, actionAddress.Description);
- //读取写入结果
- string readWriteResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if(dataValue != readWriteResult)
- {
- checkFlag = false;
- break;
- }
-
- }
-
- }
- //不通过不写执行
- if (!checkFlag)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "写入失败,plc没有写入相应的值" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- responseData.result = "false";
- return responseData;
- }
- //二次写入地址列表
- List<CcsActionAddress> CcsActionAddressWriteSeconds = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_SECOND.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWriteSeconds)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- if (string.IsNullOrEmpty(actionAddress.Value))
- {
- //取参数传参值
- string dataValue = getProperties(req.data, actionAddress.Description);
- if (!string.IsNullOrEmpty(dataValue))
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(dataValue));
- }
- }
- else
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
- }
- Thread.Sleep(SLEEP_TIME);
- }
- }
- s7.ConnectClose();
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.RobotAction.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction), req.taskId, req.taskNodeId);
- taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
-
- if(req.data.taskType == "1" && (req.data.destLocation == "30" || req.data.destLocation == "900")) //取料完成
- {
- taskCallbackData.CallbackValue = "2";
- }else if (req.data.taskType == "1" && (req.data.destLocation != "30" && req.data.destLocation != "900")) //放料完成
- {
- taskCallbackData.CallbackValue = "4";
- }
- else if (req.data.taskType == "512" ) //移动完成
- {
- taskCallbackData.CallbackValue = "4"; //todo 待确定移动完成 值
- }
- await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.RobotAction) + "操作成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- return responseData;
- }
- catch (Exception ex)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "取异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
- responseData.result = "false";
- return responseData;
- }
- }
- /// <summary>
- /// 上传文件
- /// </summary>
- public async Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- try
- {
- List<Device> devices = _deviceService.GetDeviceList();
-
- Device deviceMazak = devices.Where(x => x.Ip.Equals(req.url)
- && x.ProtocolType.Equals(ProtocalTypeEnum.MAZAK.ToString())).FirstOrDefault();
- if (deviceMazak == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
- responseData.result = "false";
- return responseData;
- }
- //mazak系统上传
- if (deviceMazak != null)
- {
- RequestOpcUaData deviceReq = new RequestOpcUaData();
- deviceReq.ServerUrl = req.url;
- deviceReq.Path = req.data.fileName;
- deviceReq.Type = OpcUaActionTypeEnum.Upload.ToString();
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, mazakUrlContext, deviceReq, null);
- ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
- if (!Result.IsSuccess || !responseOpcUaData.result)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
- responseData.result = "false";
- return responseData;
- }
- }
-
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile), req.taskId, req.taskNodeId);
- await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
- 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>
- public async Task<ResponseECSData> StartNCProgram(RequestData<StartNCProgramData> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- try
- {
- List<Device> devices = _deviceService.GetDeviceList();
- Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
- if (device == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- responseData.result = "false";
- 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);
- if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString())
- {
- 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.StartNCProgram));
- responseData.result = "false";
- return responseData;
- }
- //查询条件
- List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
- {
- string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if (actionAddress.CheckType ? operateResult.Equals(actionAddress.Value) : operateResult != actionAddress.Value)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- responseData.result = "false";
- return responseData;
- }
- }
- }
-
- //查询写入地址列表
- List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
-
- Thread.Sleep(SLEEP_TIME);
- }
- }
- List<CcsActionAddress> CcsActionAddressWriteChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWriteChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
- {
- string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if (operateResult != actionAddress.Value)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "异常===>>" + "写入失败" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- responseData.result = "false";
- return responseData;
- }
- }
- }
- s7.ConnectClose();
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- return responseData;
- }
- else
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- responseData.result = "false";
- return responseData;
- }
- }
- catch (Exception ex)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
- responseData.result = "false";
- return responseData;
- }
- }
-
- /// <summary>
- /// 启动清洗机
- /// </summary>
- public async Task<ResponseECSData> StartCleanMachine(RequestData<object> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- try
- {
- List<Device> devices = _deviceService.GetDeviceList();
- Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
- if (device == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
- responseData.result = "false";
- return responseData;
- }
- CcsAction actionQuery = new CcsAction();
- actionQuery.OperateType = ActionTypeEnum.StartCleanMachine.ToString();
- actionQuery.Ip = req.url;
- CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
- HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
-
- if (!ConnectionResult.IsSuccess)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
- responseData.result = "false";
- return responseData;
- }
- CcsActionAddress actionAddressQuery = new CcsActionAddress();
- actionAddressQuery.ActionId = actionInfo.Id;
- List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
-
- s7.ConnectClose();
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId);
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "启动成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
- return responseData;
- }
- catch (Exception ex)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
- responseData.result = "false";
- return responseData;
- }
- }
- /// <summary>
- /// 读RFID
- /// </summary>
- public async Task<ResponseECSData> ReadRFID(RequestData<RFIData> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- try
- {
- List<Device> devices = _deviceService.GetDeviceList();
- Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
- if (device == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- responseData.result = "false";
- return responseData;
- }
- CcsAction actionQuery = new CcsAction();
- actionQuery.OperateType = ActionTypeEnum.ReadRFID.ToString();
- actionQuery.Ip = req.url;
- CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
- HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
- if (!ConnectionResult.IsSuccess)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- responseData.result = "false";
- return responseData;
- }
- CcsActionAddress actionAddressQuery = new CcsActionAddress();
- actionAddressQuery.ActionId = actionInfo.Id;
- actionAddressQuery.Type = ActionAddressTypeEnum.WRITE.ToString();
- List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
- //查询写入地址列表
- List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- if (!string.IsNullOrEmpty(actionAddress.Value))
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
- }
- Thread.Sleep(SLEEP_TIME);
- }
- }
- List<CcsActionAddress> CcsActionAddressWriteChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWriteChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
- {
- string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if (operateResult != actionAddress.Value)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "异常===>>" + "写入失败" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- responseData.result = "false";
- return responseData;
- }
- }
- }
- s7.ConnectClose();
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.ReadRFID.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.ReadRFID), req.taskId, req.taskNodeId);
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "读取RFID成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- return responseData;
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.ReadRFID) + " 读取RFID成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- return responseData;
- }
- catch (Exception ex)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
- responseData.result = "false";
- return responseData;
- }
- }
- /// <summary>
- /// 写RFID
- /// </summary>
- public async Task<ResponseECSData> WriteRFID(RequestData<RFIData> req)
- {
- ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
- List<Device> devices = _deviceService.GetDeviceList();
- try
- {
- Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
- if (device == null)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- responseData.result = "false";
- return responseData;
- }
- CcsAction actionQuery = new CcsAction();
- actionQuery.OperateType = ActionTypeEnum.WriteRFID.ToString();
- actionQuery.Ip = req.url;
- CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
- HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
- if (!ConnectionResult.IsSuccess)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- responseData.result = "false";
- return responseData;
- }
- CcsActionAddress actionAddressQuery = new CcsActionAddress();
- actionAddressQuery.ActionId = actionInfo.Id;
- List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
- //查询写入地址列表
- List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address))
- {
- if (string.IsNullOrEmpty(actionAddress.Value))
- {
- s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.content, 2048));
- }
- else
- {
- s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
- }
- Thread.Sleep(SLEEP_TIME);
- }
- }
- List<CcsActionAddress> CcsActionAddressWriteChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressWriteChecks)
- {
- if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
- {
- string operateResult = s7.ReadInt16(actionAddress.Address).Content.ToString();
- if (operateResult != actionAddress.Value)
- {
- s7.ConnectClose();
- Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "异常===>>" + "写入失败" + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- responseData.result = "false";
- return responseData;
- }
- }
- }
- s7.ConnectClose();
- //插入回调
- TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.WriteRFID.ToString(),
- EnumHelper.GetDescription(ActionTypeEnum.WriteRFID), req.taskId, req.taskNodeId);
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.WriteRFID) + "写RFID成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- return responseData;
- Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.WriteRFID) + " 写RFID成功===>>" + JsonConvert.SerializeObject(req)
- , EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- return responseData;
- }
- catch (Exception ex)
- {
- Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
- EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
- responseData.result = "false";
- return responseData;
- }
- }
- /// <summary>
- /// 刀具接口列表
- /// </summary>
- public async Task<List<ResponseToolData>> GetTools(RequestToolData req)
- {
- List<Device> devices = _deviceService.GetDeviceList();
- Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
- List<ResponseToolData> list = new List<ResponseToolData>();
-
- if(device.ProtocolType == ProtocalTypeEnum.MAZAK.ToString())
- {
- RequestHeidhData hdhReq = new RequestHeidhData();
- hdhReq.ServerUrl = device.ServerUrl;
-
- hdhReq.Type = "ToolList";
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, mazakUrlContext, hdhReq, null);
- if (Result.IsSuccess)
- {
- ResponseHeidhData responseData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
- list = JsonConvert.DeserializeObject<List<ResponseToolData>>(responseData.toolsInfo);
- }
- }
- return list;
- }
-
- /// <summary>
- /// 设备上线离线
- /// </summary>
- public async Task<ResponseCommonData> UpdateDeviceState(RequestDeviceUpdateData req)
- {
- ResponseCommonData responseData = new ResponseCommonData();
- List<Device> devices = _deviceService.GetDevices();
- try
- {
- Device device = devices.Where(x => x.Ip == req.ip).FirstOrDefault();
- if (device == null)
- {
- responseData.msg = "设备不存在";
- responseData.result = "false";
- return responseData;
- }
- device.UseState = req.useState;
- device.OfflineUpdateTime = DateTime.Now;
- await _deviceService.UpdateAndCache(device);
- return responseData;
- }
- catch (Exception ex)
- {
- responseData.msg = ex.Message;
- responseData.result = "false";
- return responseData;
- }
- }
- /// <summary>
- /// 获取回调列表
- /// </summary>
- public async Task<List<TaskCallback>> GetCallBackListByCondition(RequestCallBackData vo)
- {
- List<TaskCallback> list = new List<TaskCallback>();
- try {
- TaskCallback taskCallback = new TaskCallback();
- if (!string.IsNullOrEmpty(vo.IP))
- {
- taskCallback.IP = vo.IP;
- }
- if (!string.IsNullOrEmpty(vo.TaskId))
- {
- taskCallback.TaskId = vo.TaskId;
- }
- if (!string.IsNullOrEmpty(vo.TaskNodeId))
- {
- taskCallback.TaskNodeId = vo.TaskNodeId;
- }
- list = await _taskCallbackService.GetListByCondition(taskCallback);
- }
- catch (Exception ex)
- {
- return list;
- }
- return list;
- }
-
- //设置回调值
- private TaskCallback setCallBackValue(List<CcsActionAddress> CcsActionAddresses, TaskCallback taskCallbackData)
- {
- List<CcsActionAddress> CcsActionAddressCallBacks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CALLBACK.ToString()).ToList();
- List<CcsActionAddress> CcsActionAddressCallBackFails = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CALLBACK_FAIL.ToString()).ToList();
- List<CcsActionAddress> CcsActionAddressCallBackResets = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.RESET.ToString()).ToList();
- foreach (CcsActionAddress actionAddress in CcsActionAddressCallBacks)
- {
- if (actionAddress.Sort == 1)
- {
- taskCallbackData.Address = actionAddress.Address;
- taskCallbackData.CallbackValue = actionAddress.Value;
- }
- else if (actionAddress.Sort == 2)
- {
- taskCallbackData.Address2 = actionAddress.Address;
- taskCallbackData.CallbackValue2 = actionAddress.Value;
- }
- else if (actionAddress.Sort == 3)
- {
- taskCallbackData.Address3 = actionAddress.Address;
- taskCallbackData.CallbackValue3 = actionAddress.Value;
- }
- }
- foreach (CcsActionAddress actionAddress in CcsActionAddressCallBackFails)
- {
- if (actionAddress.Sort == 1)
- {
- taskCallbackData.FailAddress = actionAddress.Address;
- taskCallbackData.CallbackFailValue = actionAddress.Value;
- }
- else if (actionAddress.Sort == 2)
- {
- taskCallbackData.FailAddress2 = actionAddress.Address;
- taskCallbackData.CallbackFailValue2 = actionAddress.Value;
- }
- else if (actionAddress.Sort == 3)
- {
- taskCallbackData.FailAddress3 = actionAddress.Address;
- taskCallbackData.CallbackFailValue3 = actionAddress.Value;
- }
- }
- foreach (CcsActionAddress actionAddress in CcsActionAddressCallBackResets)
- {
- if (actionAddress.Sort == 1)
- {
- taskCallbackData.SuccessResetAddress = actionAddress.Address;
- taskCallbackData.SuccessResetValue = actionAddress.Value;
- }
- else if (actionAddress.Sort == 2)
- {
- taskCallbackData.SuccessResetAddress2 = actionAddress.Address;
- taskCallbackData.SuccessResetValue2 = actionAddress.Value;
- }
-
- }
- return taskCallbackData;
- }
-
- public string getProperties<T>(T t , string propertyName)
- {
- string tStr = string.Empty;
- if (t == null)
- {
- return tStr;
- }
- System.Reflection.PropertyInfo[] properties = t.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
- if (properties.Length <= 0)
- {
- return tStr;
- }
- foreach (System.Reflection.PropertyInfo item in properties)
- {
- string name = item.Name;
- object value = item.GetValue(t, null);
- if ((item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String")) && name == propertyName)
- {
- tStr = value.ToString();
- break;
- }
-
- }
- return tStr;
- }
- }
- }
|