schangxiang@126.com
2024-09-10 03de13b2a5357916a7b6ec2f3e8a9ff6ca2e3970
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
@@ -1,4 +1,5 @@
using iWare_SCADA_BusinessLogical.BLL;
using iWare_SCADA_BusinessLogical.BLL.Important;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using iWare_SCADA_Model.MiddleModel;
@@ -46,8 +47,9 @@
        public override void DataCaptureStart()
        {
            if (SystemValue.isStartedModel)
            if (SystemValue.isStartedImitateModel)
            {
                /*
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -67,6 +69,7 @@
                wplog.UpdatedUserName = DataCapturePointCode;
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                WorkPieceInfoManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                /**/
                return;
            }
@@ -87,9 +90,6 @@
                    //plcService.OpenService();
                }
                string value_05 = "";
                string path = ConfigHelper.GetConfigString("OP80QualityData");//OP80的地址
                //string path = "C:\\Users\\SY-PC\\Desktop\\FO";//OP80的地址
                DateTime? fileFindTime = null;
                while (true)
                {
                    threadStatusMonitor.ErrorMsg = "";
@@ -129,8 +129,9 @@
                                wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ;
                                wplog.Remarks = WorkingProcedure;
                                wplog.MonitoringPoint = DataCapturePointCode;
                                //wplog.CreatedUserName = DataCapturePointCode;
                                SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname);
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.IsDeleted = false;
@@ -154,7 +155,14 @@
                                    }
                                }
                                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(_dataCaptureConfig.WorkingProcedure), $" {DataCapturePointCode}工序获取到下线标志位,工件码:{wplog.WorkPieceID}");
                                //特殊处理OP80 【Editby shaocx,2024-06-15】
                                if (WorkingProcedure.Equals("OP80"))
                                {
                                    wplog.GetQcDataFlag = 0;
                                }
                                //注释下面的方法,优化程序 【Editby shaocx,2024-06-15】
                                /*
                                try
                                {
                                    if (WorkingProcedure.Equals("OP80"))
@@ -213,16 +221,16 @@
                                                        }
                                                        //名称 相对值 相对值单位 绝对值 绝对值单位 名义值 上限 下限  状态/等级 分隔符
                                                        OP80ItemInfo item = new OP80ItemInfo();
                                                        item.分隔符 = rowSecond[1 + i * 10];
                                                        item.名称 = rowSecond[2 + i * 10];
                                                        item.相对值 = rowSecond[3 + i * 10];
                                                        item.相对值单位 = rowSecond[4 + i * 10];
                                                        item.绝对值 = rowSecond[5 + i * 10];
                                                        item.绝对值单位 = rowSecond[6 + i * 10];
                                                        item.名义值 = rowSecond[7 + i * 10];
                                                        item.上限 = rowSecond[8 + i * 10];
                                                        item.下限 = rowSecond[9 + i * 10];
                                                        item.状态 = rowSecond[10 + i * 10];
                                                        item.分隔符 = rowSecond[1 + i * 10];//例如:*   表头:状态
                                                        item.名称 = rowSecond[2 + i * 10];//例如:Weight Big End    表头:*
                                                        item.相对值 = rowSecond[3 + i * 10];//例如:-2.8    表头:简述
                                                        item.相对值单位 = rowSecond[4 + i * 10];//例如:gr    表头:Weight Big End
                                                        item.绝对值 = rowSecond[5 + i * 10];//例如:371.66    表头:测量单位
                                                        item.绝对值单位 = rowSecond[6 + i * 10];//例如:gr    表头:绝对值
                                                        item.名义值 = rowSecond[7 + i * 10];//例如:374.5    表头:绝对值测量单位(UoM)
                                                        item.上限 = rowSecond[8 + i * 10];//例如:10.5    表头:名义值
                                                        item.下限 = rowSecond[9 + i * 10];//例如:-10.5    表头:USL值
                                                        item.状态 = rowSecond[10 + i * 10];//例如:3    表头:LSL值
                                                        oP80Info.OP80ItemInfolist.Add(item);
                                                        if (item.名称.Equals("Weight Class") || item.名称.Equals("Weight Small End")
                                                            || item.名称.Equals("Weight Big End") || item.名称.Equals("Dime Small_End Class")
@@ -277,6 +285,43 @@
                                                    //重量组别
                                                    wplog.QualityOP80To9 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Class")).FirstOrDefault()?.状态;
                                                    //wplog.Remarks = (wplog.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName},数据【{wplog.OP80NewCode??"空"}】【{wplog.QualityOP80To1 ?? "空"}】【{wplog.QualityOP80To2 ?? "空"}】【{wplog.QualityOP80To3 ?? "空"}】【{wplog.QualityOP80To4 ?? "空"}】【{wplog.QualityOP80To5 ?? "空"}】";
                                                    //新增OP80的一些质量数据 【Editby shaocx,2024-06-13】
                                                    wplog.QualityOP80_Houdu = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Thickness")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_ZXJ = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Distance of Two Head")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_DTKYZD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Cylindricity")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_XTSMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Roundn")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_XTXMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Roundn")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_D_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_X_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_D_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_D_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_D_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值;
                                                    //计算大头孔直径,大头孔直径=(大头上面X方向直径+大头上面Y方向直径+大头下面X方向直径+大头下面Y方向直径)/4
                                                    List<decimal> valueList = new List<decimal>() {
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_S_X),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_S_Y),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_X_X),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_X_Y),
                                                    };
                                                    wplog.QualityOP80_D_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
                                                    wplog.QualityOP80_X_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_X_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_X_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_X_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值;
                                                    wplog.QualityOP80_X_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值;
                                                    //计算小头孔直径,小头孔直径=(小头上面X方向直径+小头上面Y方向直径+小头下面X方向直径+小头下面Y方向直径)/4
                                                    valueList = new List<decimal>();
                                                    valueList = new List<decimal>() {
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_S_X),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_S_Y),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_X_X),
                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_X_Y),
                                                    };
                                                    wplog.QualityOP80_X_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
                                                }
                                                else
                                                {
@@ -291,16 +336,16 @@
                                            }
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}下线标记 完成读取文件数据时异常,请查看日志!";
                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件数据时异常,避免工序完成异常:", ex);
                                }
                                //*/
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                WorkingProcedureCompleteManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
                            }