| | |
| | | using System.Threading.Tasks; |
| | | using AutoMapper; |
| | | using HslCommunication.WebSocket; |
| | | using Microsoft.AspNetCore.Mvc.ApiExplorer; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using Quartz; |
| | |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_TaskInfoService; |
| | | using WIDESEAWCS_Tasks.SerialPort; |
| | | using static WIDESEAWCS_Tasks.SerialPortJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class SerialPortJob : JobBase, IJob,IDisposable |
| | | public class SerialPortJob : JobBase, IJob, IDisposable |
| | | { |
| | | public void Dispose() |
| | | { |
| | |
| | | private readonly IPutakeServer _putakeServer; |
| | | private readonly ITorqueOpServer _torqueOpServer; |
| | | |
| | | public SerialPortJob(ITorqueOpServer torqueOpServer,IPutakeServer putakeServer,IProcessServer processServer, IPutakeRepository putakeRepository, IProcessRepository processRepository, ITorqueOpRepository torqueOpRepository, WebSocketServer webSocketContext) |
| | | static string takeid = ""; // å¨å¾ªç¯å¼å§å声æ takeid |
| | | |
| | | public SerialPortJob(ITorqueOpServer torqueOpServer, IPutakeServer putakeServer, IProcessServer processServer, IPutakeRepository putakeRepository, IProcessRepository processRepository, ITorqueOpRepository torqueOpRepository, WebSocketServer webSocketContext) |
| | | { |
| | | _putakeRepository = putakeRepository; |
| | | _processRepository = processRepository; |
| | |
| | | _webSocketContext = webSocketContext; |
| | | _processServer = processServer; |
| | | _putakeServer = putakeServer; |
| | | _torqueOpServer= torqueOpServer; |
| | | _torqueOpServer = torqueOpServer; |
| | | } |
| | | |
| | | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | |
| | | if (serialPortDevice != null) |
| | | { |
| | | List<DeviceProDTO> deviceProDTOs = serialPortDevice.DeviceProDTOs; |
| | | |
| | | foreach (var item in deviceProDTOs) |
| | | { |
| | | if (item.DeviceProParamName != CommandType.Get.ToString() && item.DeviceProParamName != CommandType.Set.ToString()) |
| | |
| | | DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandType) && x.ProtocolDetailType == nameof(CommandType.Set)); |
| | | if (deviceProtocolDetail != null) |
| | | { |
| | | string group = item.DeviceProDataBlock; |
| | | |
| | | string group = item.DeviceProDataBlock;//ç»å« |
| | | |
| | | ////2.è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | //var process = _processServer.Getcircuit(group, takeid); |
| | | |
| | | |
| | | |
| | | if (group == "çµæ°" || group == "å°æ²" || group == "æºæ¢°") |
| | | { |
| | | ProcessElectricTask(group, serialPortDevice, item, deviceProtocolDetail); |
| | | { // æ¥è¯¢ä»»å¡ä¿¡æ¯ä¸æ¬¡ |
| | | var takeResponse = _putakeServer.PerformTasks(group);//æ¥æ¾ä»»å¡åè§£è¡¨è¿æ¡ææ©çæ°æ® |
| | | if (takeResponse == null || !takeResponse.Status) |
| | | { |
| | | Console.WriteLine($"ä»»å¡å级表æ¥å£é误ï¼{takeResponse?.Message}"); |
| | | continue; |
| | | } |
| | | |
| | | var take = JsonConvert.DeserializeObject<Dt_Putake>(JsonConvert.SerializeObject(takeResponse.Data)); |
| | | takeid = take?.Njtakeid; // ç¼åä»»å¡å· |
| | | if (takeid != null) |
| | | { |
| | | ProcessElectricTask(group, serialPortDevice, item, deviceProtocolDetail, takeid); |
| | | } |
| | | } |
| | | item.DeviceProParamName = CommandType.None.ToString(); |
| | | } |
| | |
| | | //æè¿æ¡æ°æ®æå
¥opè¡¨ä¸ |
| | | string group = item.DeviceProDataBlock; // è®¾å¤æå±ç»å« |
| | | string devicecode = item.DeviceChildCode;//设å¤ç¼å· |
| | | string torqueValue = ExtractTorqueValue(receiveData);//è°ç¨è½¬å¼æ¹æ³ |
| | | string torqueValue = ExtractTorqueValue(receiveData);//è°ç¨è½¬å¼æ¹æ³ |
| | | if (group == "çµæ°" || group == "å°æ²" || group == "æºæ¢°") |
| | | { |
| | | SaveTorqueOpData(group, devicecode, torqueValue); |
| | | if (takeid != null) |
| | | { |
| | | |
| | | |
| | | //web |
| | | var process = _processServer.Getcircuit(group, takeid); |
| | | //var list = JsonConvert.SerializeObject(process.Data);//åºåå |
| | | //var dataS= JsonConvert.DeserializeObject<ProcessData>(list);//å符串ååºåå为å个 ProcessData 对象 |
| | | |
| | | var dataS = JsonConvert.DeserializeObject<ProcessData>(JsonConvert.SerializeObject(process.Data)); // ç¡®ä¿ä¸ºå¯¹è±¡ |
| | | int setnum = dataS.proNow.SetpNum; |
| | | |
| | | //åå¼ |
| | | SaveTorqueOpData(group, devicecode, torqueValue, takeid); |
| | | |
| | | //op |
| | | var opResponse = _torqueOpServer.WhetherSaveValueData(takeid, group, setnum); |
| | | //var jsonResponse = JsonConvert.SerializeObject(opResponse.Data); |
| | | var opData = JsonConvert.DeserializeObject<List<Dt_TorqueOp>>(JsonConvert.SerializeObject(opResponse.Data)); // ç¡®ä¿ä¸ºå¯¹è±¡ |
| | | |
| | | |
| | | |
| | | // å建å端éè¦çæ°æ®å¯¹è±¡ |
| | | var responseData = new |
| | | { |
| | | process = dataS, // å·¥èºè¡¨ |
| | | operation = opData // op表 |
| | | };//è¿åå½åå·¥èºæ¥éª¤åopè¡¨ä¸æ»¡è¶³æ¡ä»¶çå¼ |
| | | |
| | | |
| | | |
| | | //建ä¸ä¸ªå¯¹è±¡å°å
¶ä¼ ç»å端/åºååå¹¶æ¨éç»å端 |
| | | string data = JsonConvert.SerializeObject(responseData);//è¿éserialPortDeviceæ¯å设æè¿ä¸ªå¯¹è±¡ |
| | | _webSocketContext.PublishAllClientPayload(data); |
| | | } |
| | | |
| | | |
| | | |
| | | item.DeviceProParamName = CommandType.None.ToString(); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //建ä¸ä¸ªå¯¹è±¡å°å
¶ä¼ ç»å端 |
| | | //string data = JsonConvert.SerializeObject(serialPortDevice);//è¿éserialPortDeviceæ¯å设æè¿ä¸ªå¯¹è±¡ |
| | | //_webSocketContext.PublishAllClientPayload(data); |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¤ççµæ°ä»»å¡é»è¾ï¼åéæç©æä»¤å°è®¾å¤ |
| | |
| | | /// <param name="serialPortDevice">串å£è®¾å¤</param> |
| | | /// <param name="item">设å¤ä¿¡æ¯</param> |
| | | /// <param name="deviceProtocolDetail">设å¤å议详æ
</param> |
| | | private void ProcessElectricTask(string group, SerialPortDevice serialPortDevice, DeviceProDTO item, DeviceProtocolDetailDTO deviceProtocolDetail) |
| | | private void ProcessElectricTask( string group, SerialPortDevice serialPortDevice, DeviceProDTO item, DeviceProtocolDetailDTO deviceProtocolDetail, string takeid) |
| | | { |
| | | //1.è·åå½åä»»å¡å· //IPutakeServeréé¢çå¾
æ§è¡çç¬¬ä¸æ¡ä»»å¡ï¼ |
| | | //var take = _putakeRepository.QueryData(x => x.Grouptype == group) |
| | | // .OrderBy(x => x.Dispatchtime) |
| | | // .FirstOrDefault(); |
| | | var takeResponse = _putakeServer.PerformTasks(group); |
| | | if (takeResponse == null || !takeResponse.Status) |
| | | { |
| | | Console.WriteLine($"ä»»å¡å级表æ¥å£é误ï¼{takeResponse?.Message}"); |
| | | } |
| | | |
| | | var take = JsonConvert.DeserializeObject<Dt_Putake>(JsonConvert.SerializeObject(takeResponse.Data)); // ç¡®ä¿è½¬æ¢æ£ç¡® |
| | | var takeid = take?.Njtakeid;//æ¿å°ä»»å¡å· |
| | | |
| | | //2.è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | var process = _processServer.Getcircuit(group, takeid); |
| | |
| | | } |
| | | } |
| | | //è¿éè¿ä¸ªä»»å¡ç¬¬ä¸æ¬¡æ§è¡ï¼op表ä¸è¯å®æ¯æ²¡ææ°æ®çï¼ææç¬¬ä¸æ¬¡å°±è¦æå·¥èºè¡¨ä¸çå¼ç»å® |
| | | else if(!op.Any()&& torqueone!=0)//鲿¢æ¥éª¤ä¸ä¸torqueoneçå¼ä¸º0å¯¼è´æ¥é |
| | | else if (!op.Any() && torqueone != 0)//鲿¢æ¥éª¤ä¸ä¸torqueoneçå¼ä¸º0å¯¼è´æ¥é |
| | | { |
| | | //è®¾å¼ |
| | | var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | |
| | | { |
| | | Console.WriteLine("proNow 为空"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine($"Getcireitæ¥å£é误ï¼{process?.Message}"); |
| | |
| | | /// <summary> |
| | | /// åå¨æç©æ°æ®å° `op` 表 |
| | | /// </summary> |
| | | private void SaveTorqueOpData(string group, string devicecode, string torqueValue) |
| | | private void SaveTorqueOpData(string group, string devicecode, string torqueValue, string takeid) |
| | | { |
| | | //var take = _putakeRepository.QueryData(x => x.Grouptype == group) |
| | | // .OrderBy(x => x.Dispatchtime) |
| | | // .FirstOrDefault(); |
| | | //var takeid = take?.Njtakeid;//æ¿å°ä»»å¡å· |
| | | var takeResponse = _putakeServer.PerformTasks(group); |
| | | if (takeResponse == null || !takeResponse.Status) |
| | | { |
| | | Console.WriteLine($"ä»»å¡å级表æ¥å£é误ï¼{takeResponse?.Message}"); |
| | | } |
| | | |
| | | var take = JsonConvert.DeserializeObject<Dt_Putake>(JsonConvert.SerializeObject(takeResponse.Data)); // ç¡®ä¿è½¬æ¢æ£ç¡® |
| | | var takeid = take?.Njtakeid;//æ¿å°ä»»å¡å· |
| | | |
| | | //è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | ////è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | var process = _processServer.Getcircuit(group, takeid); |
| | | |
| | | if (process != null && process.Status) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class TorqueOpData |
| | | { |
| | | /// <summary> |
| | | /// è¿å |
| | | /// </summary> |
| | | public List<Dt_TorqueOp> TorList { get; set; } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |