yanjinhui
2025-03-26 72fdccd147d416cd27c3374b25cb2f5896d86b6f
优化通信
已修改1个文件
57 ■■■■ 文件已修改
项目代码/WIDESEAWCS_Server 正式/WIDESEAWCS_Tasks/SerialPort/SerialPortJob.cs 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_Tasks/SerialPort/SerialPortJob.cs
@@ -60,6 +60,8 @@
        private readonly IPutakeServer _putakeServer;
        private readonly ITorqueOpServer _torqueOpServer;
       static string takeid = ""; // åœ¨å¾ªçŽ¯å¼€å§‹å‰å£°æ˜Ž takeid
        public SerialPortJob(ITorqueOpServer torqueOpServer,IPutakeServer putakeServer,IProcessServer processServer, IPutakeRepository putakeRepository, IProcessRepository processRepository, ITorqueOpRepository torqueOpRepository, WebSocketServer webSocketContext)
        {
            _putakeRepository = putakeRepository;
@@ -71,6 +73,8 @@
            _torqueOpServer= torqueOpServer;    
        }
        public Task Execute(IJobExecutionContext context)
        {
            try
@@ -79,6 +83,7 @@
                if (serialPortDevice != null)
                {
                    List<DeviceProDTO> deviceProDTOs = serialPortDevice.DeviceProDTOs;
                    foreach (var item in deviceProDTOs)
                    {
                        if (item.DeviceProParamName != CommandType.Get.ToString() && item.DeviceProParamName != CommandType.Set.ToString())
@@ -86,11 +91,22 @@
                            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;//组别
                                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();
                            }
@@ -137,7 +153,11 @@
                                        string torqueValue = ExtractTorqueValue(receiveData);//调用转值方法
                                        if (group == "电气" || group == "地沟" || group == "机械")
                                        {
                                            SaveTorqueOpData(group, devicecode, torqueValue);
                                            if (takeid != null)
                                            {
                                                SaveTorqueOpData(group, devicecode, torqueValue, takeid);
                                            }
                                            item.DeviceProParamName = CommandType.None.ToString();
                                        }
@@ -199,20 +219,13 @@
        /// <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);
@@ -335,21 +348,9 @@
        /// <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拿到当前步骤
            var process = _processServer.Getcircuit(group, takeid);