1
schangxiang@126.com
2024-09-10 c34f8f93417c5a0125f9c55ba3d347411995ac13
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_03.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;
@@ -15,7 +16,7 @@
    /// <summary>
    /// NOOK推出标记
    /// </summary>
    public class DataCaptureHandler_03: DataCaptureHandler
    public class DataCaptureHandler_03 : DataCaptureHandler
    {
        public static readonly DataCaptureHandler_03 Instance = new DataCaptureHandler_03();
@@ -46,6 +47,7 @@
        {
            if (SystemValue.isStartedImitateModel)
            {
                /*
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -53,8 +55,9 @@
                wplog.EquipmentID = WorkingProcedure;
                wplog.Remarks = WorkingProcedure;
                wplog.MonitoringPoint = DataCapturePointCode;
                //wplog.CreatedUserName = DataCapturePointCode;
                SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname);
                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                wplog.CreatedUserName = DataCapturePointCode;
                wplog.IsDeleted = false;
@@ -63,8 +66,8 @@
                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                wplog.UpdatedUserName = DataCapturePointCode;
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                //*/
                return;
            }
            ThreadStatusMonitorMiddle threadStatusMonitor = new ThreadStatusMonitorMiddle();
@@ -83,7 +86,7 @@
                    //plcService.Close();
                    //plcService.OpenService();
                }
                string value_03 = "";
                string value_03 = "FALSE";//默认
                while (true)
                {
                    threadStatusMonitor.ErrorMsg = "";
@@ -109,21 +112,22 @@
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            if (value_03.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                            WorkPieceLogMiddle wplog = null;
                            var value_bool = value.ToString().ToUpper().Equals("TRUE");
                            if (value_bool)
                            {
                                wplog = new WorkPieceLogMiddle();
                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                wplog.WorkingProcedure = WorkingProcedure;
                                wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ;
                                wplog.Remarks = WorkingProcedure;
                                //wplog.WorkPieceID = "123456";
                                wplog.MonitoringPoint = DataCapturePointCode;
                                wplog.WorkPieceID = "123456";
                                //wplog.CreatedUserName = DataCapturePointCode;
                                SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname);
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.IsDeleted = false;
                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
@@ -144,37 +148,82 @@
                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {WorkingProcedure}工序监控NOOK标记 读取工件码动态赋值【{WorkingProcedure ?? "空字符串"}】异常{wplog.Id}", setex);
                                    }
                                }
                                if(_dataCaptureConfig.WorkingProcedure.Equals("OP20")
                                    //||_dataCaptureConfig.WorkingProcedure.Equals("OP60")
                                    )
                                {//op20会同时推出多件,所以特殊处理
                                    wplog.WorkPieceID = wplog.WorkPieceIDA;
                                    wplog.Remarks = "NOOK推出工件A";
                                    WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                    wplog.WorkPieceID = wplog.WorkPieceIDB;
                                    wplog.Remarks = "NOOK推出工件B";
                                    WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                    wplog.WorkPieceID = wplog.WorkPieceIDC;
                                    wplog.Remarks = "NOOK推出工件C";
                                    WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                    //wplog.WorkPieceID = wplog.WorkPieceIDD;
                                    //wplog.Remarks = "NOOK推出工件D";
                                    //WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                //监控上线
                                if (!_dataCaptureConfig.WorkingProcedure.Equals("OP20"))
                                {
                                    MonitorHelper.MonitorTestForLine(_dataCaptureConfig, value, colConfig, wplog.WorkPieceID);
                                }
                                else
                                {
                                    //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                    WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                    MonitorHelper.MonitorTestForLine(_dataCaptureConfig, value, colConfig, wplog.WorkPieceIDA);
                                    MonitorHelper.MonitorTestForLine(_dataCaptureConfig, value, colConfig, wplog.WorkPieceIDB);
                                    MonitorHelper.MonitorTestForLine(_dataCaptureConfig, value, colConfig, wplog.WorkPieceIDC);
                                }
                                threadStatusMonitor.Threadstatue = 1;
                            }
                            else
                            {
                                value_03 = value.ToString();
                            }
                            if (wplog != null)
                            {
                                if (_dataCaptureConfig.WorkingProcedure.Equals("OP20"))
                                {//特殊处理OP20
                                    if (value_03.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                                    {//当上一标记位0,当前获取标记为1时,
                                     //触发操作,  并给静态变量赋值为1
                                     //业务代码
                                        threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                        //op20会同时推出多件,所以特殊处理
                                        wplog.WorkPieceID = wplog.WorkPieceIDA;
                                        wplog.Remarks = "NOOK推出工件A";
                                        WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                        wplog.WorkPieceID = wplog.WorkPieceIDB;
                                        wplog.Remarks = "NOOK推出工件B";
                                        WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                        wplog.WorkPieceID = wplog.WorkPieceIDC;
                                        wplog.Remarks = "NOOK推出工件C";
                                        WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                        //wplog.WorkPieceID = wplog.WorkPieceIDD;
                                        //wplog.Remarks = "NOOK推出工件D";
                                        //WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                        threadStatusMonitor.Threadstatue = 1;
                                    }
                                    value_03 = value.ToString();
                                }
                                else
                                {
                                    var isRight = SystemBussinessHelper.ValidateIsRightWorkPieceID(wplog.WorkPieceID);
                                    if (isRight)
                                    {
                                        #region 处理业务
                                        if (value_03.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                                        {//当上一标记位0,当前获取标记为1时,
                                         //触发操作,  并给静态变量赋值为1
                                         //业务代码
                                            threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                            //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                            WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                            threadStatusMonitor.Threadstatue = 1;
                                        }
                                        value_03 = value.ToString();
                                        #endregion
                                    }
                                }
                            }
                            value_03 = value.ToString();
                        }
                        threadStatusMonitor.Remarks = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";