yanjinhui
2025-03-26 72fdccd147d416cd27c3374b25cb2f5896d86b6f
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_Tasks/SerialPort/SerialPortJob.cs
@@ -58,8 +58,11 @@
        private WebSocketServer _webSocketContext;
        private readonly IProcessServer _processServer;
        private readonly IPutakeServer _putakeServer;
        private readonly ITorqueOpServer _torqueOpServer;
        public SerialPortJob(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;
@@ -67,7 +70,10 @@
            _webSocketContext = webSocketContext;
            _processServer = processServer;
            _putakeServer = putakeServer;
            _torqueOpServer= torqueOpServer;
        }
        public Task Execute(IJobExecutionContext context)
        {
@@ -77,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())
@@ -84,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();
                            }
@@ -133,13 +151,13 @@
                                        string group = item.DeviceProDataBlock; // è®¾å¤‡æ‰€å±žç»„别
                                        string devicecode = item.DeviceChildCode;//设备编号
                                        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();
                                        }
@@ -201,15 +219,15 @@
        /// <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)
        {
            //获取当前任务号  //IPutakeServer里面的待执行的第一条任务;
            var take = _putakeRepository.QueryData(x => x.Grouptype == group)
                .OrderBy(x => x.Dispatchtime)
                .FirstOrDefault();
            var takeid = take?.Njtakeid;//拿到任务号
            //1.获取当前任务号  //IPutakeServer里面的待执行的第一条任务;
            //var take = _putakeRepository.QueryData(x => x.Grouptype == group)
            //    .OrderBy(x => x.Dispatchtime)
            //    .FirstOrDefault();
            //调用Getcircuit拿到当前步骤
            //2.调用Getcircuit拿到当前步骤
            var process = _processServer.Getcircuit(group, takeid);
            if (process != null && process.Status)
@@ -230,7 +248,18 @@
                    //判断op表中这个值是否有该条任务的数据
                    var op = _orqueOpRepository.QueryData(x => x.TakeId == takeid && x.GroupOp == group && x.ProcessSte == setpNum);
                    //var op = _orqueOpRepository.QueryData(x => x.TakeId == takeid && x.GroupOp == group && x.ProcessSte == setpNum);
                    // 3. æŸ¥è¯¢æ‰­çŸ©è®°å½•
                    var opResponse = _torqueOpServer.WhetherSaveValueData(takeid, group, setpNum);
                    if (opResponse == null || !opResponse.Status || opResponse.Data == null)
                    {
                        Console.WriteLine($"WhetherSaveValueData接口错误:{opResponse?.Message}");
                        return;
                    }
                    var op = JsonConvert.DeserializeObject<List<Dt_TorqueOp>>(JsonConvert.SerializeObject(opResponse.Data)); // ç¡®ä¿è½¬æ¢æ­£ç¡®
                    if (op.Any())//判断是否有数据
                    {
                        //找到了就要对比现在op表中有多少条,是否和工艺表中的目标一致
@@ -319,13 +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;//拿到任务号
            //调用Getcircuit拿到当前步骤
            var process = _processServer.Getcircuit(group, takeid);
@@ -352,7 +377,10 @@
                        TorqueSize = float.TryParse(torqueValue, out float torque) ? torque : 0.0f, // è¿™é‡Œè¿›è¡Œå­—符串到float的转换
                        CreateDate = DateTime.Now,
                    };
                    _orqueOpRepository.AddData(Addop);
                    //_orqueOpRepository.AddData(Addop);
                    _torqueOpServer.AddData(Addop);
                }
            }
        }