yanjinhui
2025-03-12 1d92f653e2bf1174d5d1d101ee0bbbd2103ecf4a
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_Tasks/SerialPort/SerialPortJob.cs
@@ -8,8 +8,10 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using Quartz;
using SqlSugar;
using StackExchange.Profiling.Internal;
using WIDESEA_ISerialPortRepository;
using WIDESEA_SerialPortRepository;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DTO;
@@ -66,13 +68,48 @@
                            if (deviceProtocolDetail != null)
                            {
                                //我要前端返回给我一个组别,和任务id
                                string group = "";
                                var putake = _putakeRepository.QueryFirst(x => x.Grouptype == group);
                                //先查状态和组,按时间降序
                                string group = "电气";
                                //这里判断组别三个看是那个,就查那个工艺表的值
                                if (group=="电气")
                                {
                                    //先看工艺表中步骤一中要扭的值有多少个 å†æŸ¥çœ‹Dt_TorqueOp表中是否有该任务号id和步骤总数是否满足工艺表
                                    var proces = _processRepository.QueryData(x => x.CraftType == group);
                                    // æŸ¥è¯¢æ‰€æœ‰å·¥è‰ºæ•°æ®ï¼ŒæŒ‰ç…§æ­¥éª¤å· SetpNum é€’增排序
                                    var processList = _processRepository.QueryData(x => x.CraftType == group)
                                                                        .OrderBy(x => x.SetpNum)
                                                                        .ToList();
                                    foreach (var process in processList)
                                    {
                                        float  torqueone = process.TorqueOne;//读到值了
                                        float torquetow = process.TorqueTwo;
                                        if (torqueone!=0)
                                        {
                                            serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torqueone * 1000).ToString().PadLeft(7, '0')) + "\r");
                                        }
                                        if (torquetow != 0)
                                        {
                                            serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torquetow * 1000).ToString().PadLeft(7, '0')) + "\r");
                                        }
                                        // è®¡ç®—当前步骤所需的 Torque æ€»æ•°
                                        int requiredTorqueCount = process.TorqueOneQuantity + process.TorqueTwoQuantity;
                                        // æŸ¥è¯¢å½“前步骤的 TorqueOp è®°å½•,匹配 ProcessSte和组,检查是否达到要求
                                        int torqueCount = _orqueOpRepository.QueryData(x => x.ProcessSte == process.SetpNum&& x.GroupOp== group).Count();
                                        if (torqueCount < requiredTorqueCount)
                                        {
                                            // å¦‚果数量不满足,停止读取
                                            break;
                                        }
                                        //符合要求,继续读取下一步
                                    }
                                }
                                if (group == "机械")
@@ -83,11 +120,7 @@
                                {
                                }
                                //g工艺表的扭力值
                                double num = 4.5;//0005000
                                serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (num* 1000).ToString().PadLeft(7,'0'))+"\r");//打开串口时先设值
                                //打开串口时先设值
                                item.DeviceProParamName = CommandType.Set.ToString();
                            }
                        }
@@ -141,10 +174,30 @@
                                    if (deviceProtocolDetail != null && receiveData.Contains(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue))
                                    {
                                        //这里成功之后,要存储到看Dt_TorqueOp(存任务号,组,值)
                                        string group = "";
                                        if (group == "电气")
                                        {
                                            var putake = _putakeRepository.QueryData(x => x.Pustatus == 2 && x.Grouptype == group).OrderByDescending(x => x.Dispatchtime).FirstOrDefault();//每次都拿最早的那条
                                            var punjid = putake.ID;
                                            var Nj = new Dt_TorqueOp()
                                            {
                                                TakeId = putake.Njtakeid,
                                                GroupOp = group,
                                                //ProcessSte= processList
                                                TorqueSize = receiveData
                                            };
                                            _orqueOpRepository.AddData(Nj);
                                        }
                                        if (group == "机械")
                                        {
                                        }
                                        if (group == "地沟")
                                        item.DeviceProParamName = CommandType.Set.ToString();
                                            item.DeviceProParamName = CommandType.Set.ToString();
                                    }
                                }