schangxiang@126.com
2024-08-26 350e1111aa34534fa6074072142deaf319f8d6b4
我的疑问是 为啥 不合格,没有不合格原因?
已修改10个文件
1895 ■■■■ 文件已修改
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2002.cs 266 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP3502.cs 349 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP8002.cs 348 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_02.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_OP3002.cs 484 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1002.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1003.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs 373 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Test/UnitTest1.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -469,6 +469,9 @@
        /// <param name="type"></param>
        public static void QualityInfoComplete(WorkPieceLogMiddle logMiddle, LogType type)
        {
            //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
            WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
            //此处同时插入了WorkPieceLog,WorkPieceInfoLog表,并新增或修改WorkPieceInfo表
            //插入质量相关表QualityDataInfo
@@ -1023,14 +1026,7 @@
                                var set_WorkingProcedureCurrent = "";
                                if (cur_db_info.WorkingProcedureCurrent != "OP10" && cur_db_info.WorkingProcedureCurrent != "OP40")
                                {
                                    if (cur_db_info.WorkingProcedureCurrent == "OP05")
                                    {
                                        set_WorkingProcedureCurrent = "OP10";
                                    }
                                    else if (cur_db_info.WorkingProcedureCurrent == "OP35")
                                    {
                                        set_WorkingProcedureCurrent = "OP40";
                                    }
                                    SetWorkingProcedureCurrentForOP10(cur_db_info, ref set_WorkingProcedureCurrent);
                                }
                                else
                                {
@@ -1105,6 +1101,37 @@
            }
        }
        public static void SetWorkingProcedureCurrentForOP10(WorkPieceInfo cur_db_info, ref string set_WorkingProcedureCurrent)
        {
            //截断字符串
            if (cur_db_info.WorkingProcedureCurrent.Length == 4)
            {
                try
                {
                    var bb = cur_db_info.WorkingProcedureCurrent.Substring(2, 2);
                    int ii = Convert.ToInt32(bb);
                    if (ii <= 10)
                    {
                        set_WorkingProcedureCurrent = "OP10";
                    }
                    else
                    {
                        set_WorkingProcedureCurrent = "OP40";
                    }
                }
                catch (Exception)
                {
                    set_WorkingProcedureCurrent = cur_db_info.WorkingProcedureCurrent;
                }
            }
            else
            {
                set_WorkingProcedureCurrent = cur_db_info.WorkingProcedureCurrent;
            }
        }
        /// <summary>
        /// 工序完成
        /// </summary>
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2002.cs
@@ -1,153 +1,153 @@
using iWare_SCADA_BusinessLogical.BLL;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using iWare_SCADA_BusinessLogical.BLL;
//using iWare_SCADA_BusinessLogical.Utils;
//using iWare_SCADA_Model;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
namespace iWare_SCADA_BusinessLogical
{
    /// <summary>
    /// OP20测试完成标记
    /// </summary>
    public class DataCaptureHandler_OP2002: DataCaptureHandler
    {
        public static readonly DataCaptureHandler_OP2002 Instance = new DataCaptureHandler_OP2002();
//namespace iWare_SCADA_BusinessLogical
//{
//    /// <summary>
//    /// OP20测试完成标记
//    /// </summary>
//    public class DataCaptureHandler_OP2002: DataCaptureHandler
//    {
//        public static readonly DataCaptureHandler_OP2002 Instance = new DataCaptureHandler_OP2002();
        public DataCaptureHandler_OP2002()
        {
        }
//        public DataCaptureHandler_OP2002()
//        {
//        }
        public override string WorkingProcedure
        {
            get { return _dataCaptureConfig.WorkingProcedure; }
        }
//        public override string WorkingProcedure
//        {
//            get { return _dataCaptureConfig.WorkingProcedure; }
//        }
        public override string DataCapturePointCode
        {
            get { return _dataCaptureConfig.DataCapturePointCode; }
        }
        public override string DataCapturePointCname
        {
            get { return _dataCaptureConfig.DataCapturePointCname; }
        }
//        public override string DataCapturePointCode
//        {
//            get { return _dataCaptureConfig.DataCapturePointCode; }
//        }
//        public override string DataCapturePointCname
//        {
//            get { return _dataCaptureConfig.DataCapturePointCname; }
//        }
        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
        {
            //try
            //{
            //    foreach (var dataCaptureColumnDict in dataCaptureConfig)
            //    {
            //        switch (dataCaptureColumnDict.DataCapturePointCode)
            //        {
            //            case "OP2001":
            //                //_dataCaptureConfig = dataCaptureColumnDict;
            //                IsCaptureflag = true;
            //                return;
//        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
//        {
//            //try
//            //{
//            //    foreach (var dataCaptureColumnDict in dataCaptureConfig)
//            //    {
//            //        switch (dataCaptureColumnDict.DataCapturePointCode)
//            //        {
//            //            case "OP2001":
//            //                //_dataCaptureConfig = dataCaptureColumnDict;
//            //                IsCaptureflag = true;
//            //                return;
            //        }
            //    }
            //}
            //catch (Exception ex)
            //{
            //    SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} OP05工序监控打码标记 出现异常,请查看日志!";
            //    Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "刷新 OP05工序监控打码标记数据时异常:", ex);
            //}
        }
//            //        }
//            //    }
//            //}
//            //catch (Exception ex)
//            //{
//            //    SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} OP05工序监控打码标记 出现异常,请查看日志!";
//            //    Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "刷新 OP05工序监控打码标记数据时异常:", ex);
//            //}
//        }
        public override void DataCaptureStart()
        {
            if (IsCaptureflag)
            {
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                if (plcService == null)
                {
                    SystemValue._lbl_Alert_OP2001 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
                    return;
                }
                if (plcService != null && !plcService.IsConnected)
                {
                    plcService.Close();
                    plcService.OpenService();
                }
                while (true)
                {
                    try
                    {
                        //_dataCaptureConfig
                        if (plcService == null || !plcService.IsConnected)
                        {
                            SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
                            plcService.Close();
                            plcService.OpenService();
                            Thread.Sleep(100);
                            continue;
                        }
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            if (SystemValue.value_OP2001.Equals("0") && value.ToString().Equals("1"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                                wplog.WorkingProcedure = "OP20";
                                wplog.EquipmentID = "OP20";
                                wplog.Remarks = "OP20";
                                wplog.MonitoringPoint = "OP2002";
                                foreach (var col in colConfig)
                                {
                                    switch(col.DbNumber+ col.Offset)
                                    {
                                        case ""://读取二维码
                                            var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, PLCManger.GetTypeForString(col.DataCaptureColumnType));
                                            wplog.WorkPieceID = valuecol.ToString();
                                            break;
                                    }
                                }
//        public override void DataCaptureStart()
//        {
//            if (IsCaptureflag)
//            {
//                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                if (plcService == null)
//                {
//                    SystemValue._lbl_Alert_OP2001 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
//                    return;
//                }
//                if (plcService != null && !plcService.IsConnected)
//                {
//                    plcService.Close();
//                    plcService.OpenService();
//                }
//                while (true)
//                {
//                    try
//                    {
//                        //_dataCaptureConfig
//                        if (plcService == null || !plcService.IsConnected)
//                        {
//                            SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
//                            plcService.Close();
//                            plcService.OpenService();
//                            Thread.Sleep(100);
//                            continue;
//                        }
//                        else
//                        {
//                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
//                            if (SystemValue.value_OP2001.Equals("0") && value.ToString().Equals("1"))
//                            {//当上一标记位0,当前获取标记为1时,
//                             //触发操作,  并给静态变量赋值为1
//                             //业务代码
//                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                                wplog.WorkingProcedure = "OP20";
//                                wplog.EquipmentID = "OP20";
//                                wplog.Remarks = "OP20";
//                                wplog.MonitoringPoint = "OP2002";
//                                foreach (var col in colConfig)
//                                {
//                                    switch(col.DbNumber+ col.Offset)
//                                    {
//                                        case ""://读取二维码
//                                            var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, PLCManger.GetTypeForString(col.DataCaptureColumnType));
//                                            wplog.WorkPieceID = valuecol.ToString();
//                                            break;
//                                    }
//                                }
                                #region 工控机读取质量信息
//                                #region 工控机读取质量信息
                                //扫描共享目录并将新的文件扫描返回
                                var newFiles = FileHelper.DetectNewFilesCSV("", 10, DateTimeHelper.GetDateTime(), DateTimeHelper.GetDateTime());
                                foreach (System.IO.FileInfo file in newFiles)
                                {
                                    var datatable = CSVHelper.ReadCSV(file.FullName);
                                }
//                                //扫描共享目录并将新的文件扫描返回
//                                var newFiles = FileHelper.DetectNewFilesCSV("", 10, DateTimeHelper.GetDateTime(), DateTimeHelper.GetDateTime());
//                                foreach (System.IO.FileInfo file in newFiles)
//                                {
//                                    var datatable = CSVHelper.ReadCSV(file.FullName);
//                                }
                                #endregion
//                                #endregion
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, LogType.PLCOP20);
//                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                                WorkPieceInfoManager.QualityInfoComplete(wplog, LogType.PLCOP20);
                            }
                            SystemValue.value_OP2001 = value.ToString();
//                            }
//                            SystemValue.value_OP2001 = value.ToString();
                        }
                        SystemValue._lbl_Alert_OP2001 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
//                        }
//                        SystemValue._lbl_Alert_OP2001 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
                    }
                    catch (Exception ex)
                    {
                        SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} 读取OP05工序监控打码标记 出现异常,请查看日志!";
                        Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "读取 OP05工序监控打码标记数据时异常:", ex);
                    }
                }
            }
            else
            {
                SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} OP05工序监控打码标记 不做校验,请确认配置信息!";
                Log4NetHelper.WriteInfoLog(LogType.PLCOP05, "读OP05工序监控打码标记 不做校验,请确认是否配置异常");
            }
        }
//                    }
//                    catch (Exception ex)
//                    {
//                        SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} 读取OP05工序监控打码标记 出现异常,请查看日志!";
//                        Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "读取 OP05工序监控打码标记数据时异常:", ex);
//                    }
//                }
//            }
//            else
//            {
//                SystemValue._lbl_Alert_OP2001 = $" {RandomHelper.GenerateRandomCode(4)} OP05工序监控打码标记 不做校验,请确认配置信息!";
//                Log4NetHelper.WriteInfoLog(LogType.PLCOP05, "读OP05工序监控打码标记 不做校验,请确认是否配置异常");
//            }
//        }
    }
}
//    }
//}
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP3502.cs
@@ -1,195 +1,198 @@
using iWare_SCADA_BusinessLogical.BLL;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
//using iWare_SCADA_BusinessLogical.BLL;
//using iWare_SCADA_BusinessLogical.Utils;
//using iWare_SCADA_Model;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
//using System.Web.UI.WebControls;
namespace iWare_SCADA_BusinessLogical
{
    /// <summary>
    /// OP35测量完成标记
    /// </summary>
    public class DataCaptureHandler_OP3502: DataCaptureHandler
    {
        public static readonly DataCaptureHandler_OP3502 Instance = new DataCaptureHandler_OP3502();
//namespace iWare_SCADA_BusinessLogical
//{
//    /// <summary>
//    /// OP35测量完成标记
//    /// </summary>
//    public class DataCaptureHandler_OP3502 : DataCaptureHandler
//    {
//        public static readonly DataCaptureHandler_OP3502 Instance = new DataCaptureHandler_OP3502();
        public DataCaptureHandler_OP3502()
        {
        }
//        public DataCaptureHandler_OP3502()
//        {
//        }
        public override string WorkingProcedure
        {
            get { return _dataCaptureConfig.WorkingProcedure; }
        }
//        public override string WorkingProcedure
//        {
//            get { return _dataCaptureConfig.WorkingProcedure; }
//        }
        public override string DataCapturePointCode
        {
            get { return _dataCaptureConfig.DataCapturePointCode; }
        }
        public override string DataCapturePointCname
        {
            get { return _dataCaptureConfig.DataCapturePointCname; }
        }
//        public override string DataCapturePointCode
//        {
//            get { return _dataCaptureConfig.DataCapturePointCode; }
//        }
//        public override string DataCapturePointCname
//        {
//            get { return _dataCaptureConfig.DataCapturePointCname; }
//        }
        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
        {
        }
//        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
//        {
//        }
        public override void DataCaptureStart()
        {
            if (SystemValue.isStartedImitateModel)
            {
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                wplog.WorkingProcedure = WorkingProcedure;
                wplog.EquipmentID = WorkingProcedure;
                wplog.Remarks = WorkingProcedure;
                wplog.MonitoringPoint = DataCapturePointCode;
                wplog.WorkPieceID = "123456";
                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                wplog.CreatedUserName = DataCapturePointCode;
                wplog.IsDeleted = false;
                wplog.QualityType = QualityType.Online.ToString();
//        public override void DataCaptureStart()
//        {
//            if (SystemValue.isStartedImitateModel)
//            {
//                //模拟代码注释
//                /*
//                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
//                wplog.WorkingProcedure = WorkingProcedure;
//                wplog.EquipmentID = WorkingProcedure;
//                wplog.Remarks = WorkingProcedure;
//                wplog.MonitoringPoint = DataCapturePointCode;
//                wplog.WorkPieceID = "123456";
//                wplog.CreatedTime = DateTimeHelper.GetDateTime();
//                wplog.CreatedUserName = DataCapturePointCode;
//                wplog.IsDeleted = false;
//                wplog.QualityType = QualityType.Online.ToString();
                wplog.WorkPieceID = WorkPieceID;
                wplog.EquipmentID = _dataCaptureConfig.EquipmentID;
                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                wplog.UpdatedUserName = DataCapturePointCode;
                wplog.QualityState = (int)QualityState.NG;
                wplog.QualityStateUpdateUser = WorkingProcedure;
                wplog.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
//                wplog.WorkPieceID = WorkPieceID;
//                wplog.EquipmentID = _dataCaptureConfig.EquipmentID;
//                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
//                wplog.UpdatedUserName = DataCapturePointCode;
//                wplog.QualityState = (int)QualityState.NG;
//                wplog.QualityStateUpdateUser = WorkingProcedure;
//                wplog.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                wplog.QualityOP35To1 = "QualityOP35To1";
                wplog.QualityOP35To2 = "QualityOP35To2";
                //wplog.QualityOP35To3 = "QualityOP35To3";
                //wplog.QualityOP35To4 = "QualityOP35To4";
                //wplog.QualityOP35To5 = "QualityOP35To5";
                //wplog.QualityOP35To6 = "QualityOP35To6";
                //wplog.QualityOP35To7 = "QualityOP35To7";
//                wplog.QualityOP35To1 = "QualityOP35To1";
//                wplog.QualityOP35To2 = "QualityOP35To2";
//                //wplog.QualityOP35To3 = "QualityOP35To3";
//                //wplog.QualityOP35To4 = "QualityOP35To4";
//                //wplog.QualityOP35To5 = "QualityOP35To5";
//                //wplog.QualityOP35To6 = "QualityOP35To6";
//                //wplog.QualityOP35To7 = "QualityOP35To7";
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                //*/
                return;
            }
            if (IsCaptureflag)
            {
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                if (plcService == null)
                {
                    SystemValue.lbl_Alert_OP3502 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
                    return;
                }
                if (plcService != null && !plcService.IsConnected)
                {
                    plcService.Close();
                    plcService.OpenService();
                }
                while (true)
                {
                    ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor();
                    threadStatusMonitor.Threadcode = DataCapturePointCode;
                    threadStatusMonitor.Threadcname = DataCapturePointCname;
                    threadStatusMonitor.Threadendtime = DateTime.Now;
                    threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                    threadStatusMonitor.Threadstatue = 0;
                    threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
                    try
                    {
                        //_dataCaptureConfig
                        if (plcService == null || !plcService.IsConnected)
                        {
                            SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
                            plcService.Close();
                            plcService.OpenService();
                            Thread.Sleep(100);
                            continue;
                        }
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            if (SystemValue.value_OP3502.Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                wplog.WorkingProcedure = WorkingProcedure;
                                wplog.EquipmentID = WorkingProcedure;
                                wplog.Remarks = WorkingProcedure;
                                wplog.MonitoringPoint = DataCapturePointCode;
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.IsDeleted = false;
                                wplog.QualityType = QualityType.Online.ToString();
//                return;
//            }
//            if (IsCaptureflag)
//            {
//                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                if (plcService == null)
//                {
//                    SystemValue.lbl_Alert_OP3502 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
//                    return;
//                }
//                if (plcService != null && !plcService.IsConnected)
//                {
//                    plcService.Close();
//                    plcService.OpenService();
//                }
//                while (true)
//                {
//                    ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor();
//                    threadStatusMonitor.Threadcode = DataCapturePointCode;
//                    threadStatusMonitor.Threadcname = DataCapturePointCname;
//                    threadStatusMonitor.Threadendtime = DateTime.Now;
//                    threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
//                    threadStatusMonitor.Threadstatue = 0;
//                    threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
//                    try
//                    {
//                        //_dataCaptureConfig
//                        if (plcService == null || !plcService.IsConnected)
//                        {
//                            SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
//                            plcService.Close();
//                            plcService.OpenService();
//                            Thread.Sleep(100);
//                            continue;
//                        }
//                        else
//                        {
//                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
//                            if (SystemValue.value_OP3502.Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
//                            {//当上一标记位0,当前获取标记为1时,
//                             //触发操作,  并给静态变量赋值为1
//                             //业务代码
//                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
//                                wplog.WorkingProcedure = WorkingProcedure;
//                                wplog.EquipmentID = WorkingProcedure;
//                                wplog.Remarks = WorkingProcedure;
//                                wplog.MonitoringPoint = DataCapturePointCode;
//                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
//                                wplog.CreatedUserName = DataCapturePointCode;
//                                wplog.IsDeleted = false;
//                                wplog.QualityType = QualityType.Online.ToString();
                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
                                {
                                    try
                                    {
                                        var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType));
                                        //wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值
                                        var set = wplog.GetType().GetProperty(col.DataCaptureColumnTabelName);
                                        if (set == null)
                                        {
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
                                        }
                                        set.SetValue(wplog, valuecol);//给动态字段赋值
                                    }
                                    catch (Exception setex)
                                    {
                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态赋值【{WorkingProcedure ?? "空字符串"}】异常{wplog.Id}", setex);
                                    }
                                }
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
//                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
//                                {
//                                    try
//                                    {
//                                        var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType));
//                                        //wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值
//                                        var set = wplog.GetType().GetProperty(col.DataCaptureColumnTabelName);
//                                        if (set == null)
//                                        {
//                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
//                                        }
//                                        set.SetValue(wplog, valuecol);//给动态字段赋值
//                                    }
//                                    catch (Exception setex)
//                                    {
//                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态赋值【{WorkingProcedure ?? "空字符串"}】异常{wplog.Id}", setex);
//                                    }
//                                }
//                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                                threadStatusMonitor.Threadstatue = 1;
                            }
                            SystemValue.value_OP3502 = value.ToString();
//                            }
//                            SystemValue.value_OP3502 = value.ToString();
                        }
                        SystemValue.lbl_Alert_OP3502 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
                        {
                            Thread.Sleep(5000);
                        }
                        else
                        {
                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
                        }
//                        }
//                        SystemValue.lbl_Alert_OP3502 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
//                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
//                        {
//                            Thread.Sleep(5000);
//                        }
//                        else
//                        {
//                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
//                        }
                    }
                    catch (Exception ex)
                    {
                        SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}工序监控测量标记 出现异常,请查看日志!";
                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常:", ex);
                    }
                    finally
                    {
                        WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
                    }
                }
            }
            else
            {
                SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} {DataCapturePointCode}工序监控测量标记 不做校验,请确认配置信息!";
                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读{DataCapturePointCode}工序监控测量标记 不做校验,请确认是否配置异常");
            }
        }
//                    }
//                    catch (Exception ex)
//                    {
//                        SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}工序监控测量标记 出现异常,请查看日志!";
//                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常:", ex);
//                    }
//                    finally
//                    {
//                        WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
//                    }
//                }
//            }
//            else
//            {
//                SystemValue.lbl_Alert_OP3502 = $" {RandomHelper.GenerateRandomCode(4)} {DataCapturePointCode}工序监控测量标记 不做校验,请确认配置信息!";
//                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读{DataCapturePointCode}工序监控测量标记 不做校验,请确认是否配置异常");
//            }
//        }
    }
}
//    }
//}
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP8002.cs
@@ -1,194 +1,196 @@
using iWare_SCADA_BusinessLogical.BLL;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
//using iWare_SCADA_BusinessLogical.BLL;
//using iWare_SCADA_BusinessLogical.Utils;
//using iWare_SCADA_Model;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
//using System.Web.UI.WebControls;
namespace iWare_SCADA_BusinessLogical
{
    /// <summary>
    /// OP80测量完成标记
    /// </summary>
    public class DataCaptureHandler_OP8002: DataCaptureHandler
    {
        public static readonly DataCaptureHandler_OP8002 Instance = new DataCaptureHandler_OP8002();
//namespace iWare_SCADA_BusinessLogical
//{
//    /// <summary>
//    /// OP80测量完成标记
//    /// </summary>
//    public class DataCaptureHandler_OP8002 : DataCaptureHandler
//    {
//        public static readonly DataCaptureHandler_OP8002 Instance = new DataCaptureHandler_OP8002();
        public DataCaptureHandler_OP8002()
        {
        }
//        public DataCaptureHandler_OP8002()
//        {
//        }
        public override string WorkingProcedure
        {
            get { return _dataCaptureConfig.WorkingProcedure; }
        }
//        public override string WorkingProcedure
//        {
//            get { return _dataCaptureConfig.WorkingProcedure; }
//        }
        public override string DataCapturePointCode
        {
            get { return _dataCaptureConfig.DataCapturePointCode; }
        }
        public override string DataCapturePointCname
        {
            get { return _dataCaptureConfig.DataCapturePointCname; }
        }
//        public override string DataCapturePointCode
//        {
//            get { return _dataCaptureConfig.DataCapturePointCode; }
//        }
//        public override string DataCapturePointCname
//        {
//            get { return _dataCaptureConfig.DataCapturePointCname; }
//        }
        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
        {
            //try
            //{
            //    foreach (var dataCaptureColumnDict in dataCaptureConfig)
            //    {
            //        switch (dataCaptureColumnDict.DataCapturePointCode)
            //        {
            //            case "OP8002":
            //                //_dataCaptureConfig = dataCaptureColumnDict;
            //                IsCaptureflag = true;
            //                return;
//        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
//        {
//            //try
//            //{
//            //    foreach (var dataCaptureColumnDict in dataCaptureConfig)
//            //    {
//            //        switch (dataCaptureColumnDict.DataCapturePointCode)
//            //        {
//            //            case "OP8002":
//            //                //_dataCaptureConfig = dataCaptureColumnDict;
//            //                IsCaptureflag = true;
//            //                return;
            //        }
            //    }
            //}
            //catch (Exception ex)
            //{
            //    SystemValue._lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} OP80工序监控打码标记 出现异常,请查看日志!";
            //    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "刷新 OP80工序监控打码标记数据时异常:", ex);
            //}
        }
//            //        }
//            //    }
//            //}
//            //catch (Exception ex)
//            //{
//            //    SystemValue._lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} OP80工序监控打码标记 出现异常,请查看日志!";
//            //    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "刷新 OP80工序监控打码标记数据时异常:", ex);
//            //}
//        }
        public override void DataCaptureStart()
        {
            if (SystemValue.isStartedImitateModel)
            {
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                wplog.WorkingProcedure = WorkingProcedure;
                wplog.EquipmentID = WorkingProcedure;
                wplog.Remarks = WorkingProcedure;
                wplog.MonitoringPoint = DataCapturePointCode;
                wplog.WorkPieceID = "123456";
                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                wplog.CreatedUserName = DataCapturePointCode;
                wplog.IsDeleted = false;
                wplog.QualityType = QualityType.Online.ToString();
//        public override void DataCaptureStart()
//        {
//            if (SystemValue.isStartedImitateModel)
//            {
//                //模拟代码注释
//                /*
//                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
//                wplog.WorkingProcedure = WorkingProcedure;
//                wplog.EquipmentID = WorkingProcedure;
//                wplog.Remarks = WorkingProcedure;
//                wplog.MonitoringPoint = DataCapturePointCode;
//                wplog.WorkPieceID = "123456";
//                wplog.CreatedTime = DateTimeHelper.GetDateTime();
//                wplog.CreatedUserName = DataCapturePointCode;
//                wplog.IsDeleted = false;
//                wplog.QualityType = QualityType.Online.ToString();
                wplog.WorkPieceID = WorkPieceID;
                wplog.EquipmentID = _dataCaptureConfig.EquipmentID;
                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                wplog.UpdatedUserName = DataCapturePointCode;
                wplog.QualityState = (int)QualityState.NG;
                wplog.QualityStateUpdateUser = WorkingProcedure;
                wplog.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
//                wplog.WorkPieceID = WorkPieceID;
//                wplog.EquipmentID = _dataCaptureConfig.EquipmentID;
//                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
//                wplog.UpdatedUserName = DataCapturePointCode;
//                wplog.QualityState = (int)QualityState.NG;
//                wplog.QualityStateUpdateUser = WorkingProcedure;
//                wplog.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                wplog.QualityOP80To1 = "QualityOP80To1";
                wplog.QualityOP80To2 = "QualityOP80To2";
                wplog.QualityOP80To3 = "QualityOP80To3";
                wplog.QualityOP80To4 = "QualityOP80To4";
                wplog.QualityOP80To5 = "QualityOP80To5";
                wplog.QualityOP80To6 = "QualityOP80To6";
                wplog.QualityOP80To7 = "QualityOP80To7";
//                wplog.QualityOP80To1 = "QualityOP80To1";
//                wplog.QualityOP80To2 = "QualityOP80To2";
//                wplog.QualityOP80To3 = "QualityOP80To3";
//                wplog.QualityOP80To4 = "QualityOP80To4";
//                wplog.QualityOP80To5 = "QualityOP80To5";
//                wplog.QualityOP80To6 = "QualityOP80To6";
//                wplog.QualityOP80To7 = "QualityOP80To7";
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                //*/
                return;
            }
            if (IsCaptureflag)
            {
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                if (plcService == null)
                {
                    SystemValue.lbl_Alert_OP8002 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
                    return;
                }
                if (plcService != null && !plcService.IsConnected)
                {
                    plcService.Close();
                    plcService.OpenService();
                }
                while (true)
                {
                    try
                    {
                        //_dataCaptureConfig
                        if (plcService == null || !plcService.IsConnected)
                        {
                            SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
                            plcService.Close();
                            plcService.OpenService();
                            Thread.Sleep(100);
                            continue;
                        }
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            if (SystemValue.value_OP8002.Equals("0") && value.ToString().Equals("1"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                wplog.WorkingProcedure = WorkingProcedure;
                                wplog.EquipmentID = WorkingProcedure;
                                wplog.Remarks = WorkingProcedure;
                                wplog.MonitoringPoint = DataCapturePointCode;
                                wplog.WorkPieceID = "123456";
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.IsDeleted = false;
                                wplog.QualityType = QualityType.Online.ToString();
                                //foreach (var col in colConfig)
                                //{
                                //    switch(col.DbNumber+ col.Offset)
                                //    {
                                //        case "":
                                            var valuecol = plcService.ReadValuePoint("2050", "28", 25, typeof(string));
                                            wplog.WorkPieceID = valuecol.ToString();
                                //            break;
                                //    }
                                //}
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                return;
//            }
//            if (IsCaptureflag)
//            {
//                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                if (plcService == null)
//                {
//                    SystemValue.lbl_Alert_OP8002 = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
//                    return;
//                }
//                if (plcService != null && !plcService.IsConnected)
//                {
//                    plcService.Close();
//                    plcService.OpenService();
//                }
//                while (true)
//                {
//                    try
//                    {
//                        //_dataCaptureConfig
//                        if (plcService == null || !plcService.IsConnected)
//                        {
//                            SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
//                            plcService.Close();
//                            plcService.OpenService();
//                            Thread.Sleep(100);
//                            continue;
//                        }
//                        else
//                        {
//                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
//                            if (SystemValue.value_OP8002.Equals("0") && value.ToString().Equals("1"))
//                            {//当上一标记位0,当前获取标记为1时,
//                             //触发操作,  并给静态变量赋值为1
//                             //业务代码
//                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
//                                wplog.WorkingProcedure = WorkingProcedure;
//                                wplog.EquipmentID = WorkingProcedure;
//                                wplog.Remarks = WorkingProcedure;
//                                wplog.MonitoringPoint = DataCapturePointCode;
//                                wplog.WorkPieceID = "123456";
//                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
//                                wplog.CreatedUserName = DataCapturePointCode;
//                                wplog.IsDeleted = false;
//                                wplog.QualityType = QualityType.Online.ToString();
//                                //foreach (var col in colConfig)
//                                //{
//                                //    switch(col.DbNumber+ col.Offset)
//                                //    {
//                                //        case "":
//                                var valuecol = plcService.ReadValuePoint("2050", "28", 25, typeof(string));
//                                wplog.WorkPieceID = valuecol.ToString();
//                                //            break;
//                                //    }
//                                //}
//                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                            }
                            SystemValue.value_OP8002 = value.ToString();
//                            }
//                            SystemValue.value_OP8002 = value.ToString();
                        }
                        SystemValue.lbl_Alert_OP8002 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
                        {
                            Thread.Sleep(5000);
                        }
                        else
                        {
                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
                        }
//                        }
//                        SystemValue.lbl_Alert_OP8002 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
//                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
//                        {
//                            Thread.Sleep(5000);
//                        }
//                        else
//                        {
//                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
//                        }
                    }
                    catch (Exception ex)
                    {
                        SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} 读取{WorkingProcedure}工序监控打码标记 出现异常,请查看日志!";
                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "读取 {WorkingProcedure}工序监控打码标记数据时异常:", ex);
                    }
                }
            }
            else
            {
                SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} {WorkingProcedure}工序监控打码标记 不做校验,请确认配置信息!";
                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "读{WorkingProcedure}工序监控打码标记 不做校验,请确认是否配置异常");
            }
        }
//                    }
//                    catch (Exception ex)
//                    {
//                        SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} 读取{WorkingProcedure}工序监控打码标记 出现异常,请查看日志!";
//                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "读取 {WorkingProcedure}工序监控打码标记数据时异常:", ex);
//                    }
//                }
//            }
//            else
//            {
//                SystemValue.lbl_Alert_OP8002 = $" {RandomHelper.GenerateRandomCode(4)} {WorkingProcedure}工序监控打码标记 不做校验,请确认配置信息!";
//                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), "读{WorkingProcedure}工序监控打码标记 不做校验,请确认是否配置异常");
//            }
//        }
    }
}
//    }
//}
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_02.cs
@@ -57,6 +57,8 @@
        {
            if (SystemValue.isStartedImitateModel)
            {
                //模拟代码注释
                /*
                var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -90,6 +92,7 @@
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                //*/
                return;
            }
@@ -610,9 +613,7 @@
                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}测量完成读取文件数据时异常,避免工序完成异常:", ex);
                                }
                                //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
                                WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(logMiddle, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_OP3002.cs
@@ -1,268 +1,268 @@
using iWare_SCADA_BusinessLogical.BLL;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using iWare_SCADA_Model.MiddleModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
//using iWare_SCADA_BusinessLogical.BLL;
//using iWare_SCADA_BusinessLogical.Utils;
//using iWare_SCADA_Model;
//using iWare_SCADA_Model.MiddleModel;
//using System;
//using System.Collections.Generic;
//using System.IO;
//using System.Linq;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
//using System.Web.UI.WebControls;
namespace iWare_SCADA_BusinessLogical
{
    /// <summary>
    /// 测量完成标记
    /// </summary>
    public class DataCaptureHandler_OP3002: DataCaptureHandler
    {
        public static readonly DataCaptureHandler_OP3002 Instance = new DataCaptureHandler_OP3002();
//namespace iWare_SCADA_BusinessLogical
//{
//    /// <summary>
//    /// 测量完成标记
//    /// </summary>
//    public class DataCaptureHandler_OP3002: DataCaptureHandler
//    {
//        public static readonly DataCaptureHandler_OP3002 Instance = new DataCaptureHandler_OP3002();
        public DataCaptureHandler_OP3002()
        {
        }
//        public DataCaptureHandler_OP3002()
//        {
//        }
        public override string WorkingProcedure
        {
            get { return _dataCaptureConfig.WorkingProcedure; }
        }
//        public override string WorkingProcedure
//        {
//            get { return _dataCaptureConfig.WorkingProcedure; }
//        }
        public override string DataCapturePointCode
        {
            get { return _dataCaptureConfig.DataCapturePointCode; }
        }
        public override string DataCapturePointCname
        {
            get { return _dataCaptureConfig.DataCapturePointCname; }
        }
//        public override string DataCapturePointCode
//        {
//            get { return _dataCaptureConfig.DataCapturePointCode; }
//        }
//        public override string DataCapturePointCname
//        {
//            get { return _dataCaptureConfig.DataCapturePointCname; }
//        }
        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
        {
        }
//        public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
//        {
//        }
        public override void DataCaptureStart()
        {
            ThreadStatusMonitorMiddle threadStatusMonitor = new ThreadStatusMonitorMiddle();
            if (IsCaptureflag)
            {
                //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
                var plcService = SystemValue.GetPLCService(_dataCaptureConfig);
                if (plcService == null)
                {
                    threadStatusMonitor.ErrorMsg = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
                    return;
                }
                if (plcService != null && !plcService.IsConnected)
                {
                    SystemValue.PLCServiceReconnect(plcService);
                    //plcService.Close();
                    //plcService.OpenService();
                }
                string Station = "03";
                string value_02 = "";
                string path = ConfigHelper.GetConfigString("OP30QualityDataForStation");//打码机打码二维码路径
                if(string.IsNullOrEmpty(path))
                {
                    path = @"Z:\";
                }
                if(DataCapturePointCode.Contains("CH3"))
                {//工位3 涨断力矩
                    path = path + "kistler_crack";
                }
                else if (DataCapturePointCode.Contains("CH4"))
                {//工位4 预拧紧力矩
//        public override void DataCaptureStart()
//        {
//            ThreadStatusMonitorMiddle threadStatusMonitor = new ThreadStatusMonitorMiddle();
//            if (IsCaptureflag)
//            {
//                //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
//                var plcService = SystemValue.GetPLCService(_dataCaptureConfig);
//                if (plcService == null)
//                {
//                    threadStatusMonitor.ErrorMsg = $"{RandomHelper.GenerateRandomCode(4)} 没有找到{_dataCaptureConfig.WorkingProcedure}的PLC设备";
//                    return;
//                }
//                if (plcService != null && !plcService.IsConnected)
//                {
//                    SystemValue.PLCServiceReconnect(plcService);
//                    //plcService.Close();
//                    //plcService.OpenService();
//                }
//                string Station = "03";
//                string value_02 = "";
//                string path = ConfigHelper.GetConfigString("OP30QualityDataForStation");//打码机打码二维码路径
//                if(string.IsNullOrEmpty(path))
//                {
//                    path = @"Z:\";
//                }
//                if(DataCapturePointCode.Contains("CH3"))
//                {//工位3 涨断力矩
//                    path = path + "kistler_crack";
//                }
//                else if (DataCapturePointCode.Contains("CH4"))
//                {//工位4 预拧紧力矩
                    path = path + "Bosch_Rexroth";
                }
                else if (DataCapturePointCode.Contains("CH5"))
                {//工位5 拧紧力矩
//                    path = path + "Bosch_Rexroth";
//                }
//                else if (DataCapturePointCode.Contains("CH5"))
//                {//工位5 拧紧力矩
                    path = path + "Bosch_Rexroth";
                }
                else if (DataCapturePointCode.Contains("CH6"))
                {//工位6 衬套压装力矩
//                    path = path + "Bosch_Rexroth";
//                }
//                else if (DataCapturePointCode.Contains("CH6"))
//                {//工位6 衬套压装力矩
                    path = path + "kistler_bush";
                }
//                质量信息:涨断力矩...    预拧紧力矩 预拧紧角度   终拧紧力矩 终拧紧角度
//kistler_crack 涨断力矩 工位3 涨断力矩(Y - Maximum)  质量结果(Result)
//kistler_bush 压装力矩 工位6 衬套压装力矩(Y - Maximum)  衬套压装位移(Block X) 质量结果(Result)
//Bosch_Rexroth /(Ch_0_1.csv / Ch_0_2.csv 两通道 同时取最新的(或者id对应?))  预拧紧力矩工位4 预拧紧力矩(T + Nm)  质量结果(结果)    目前文件不能自动生成 博世 力士乐拧紧系统
//Bosch_Rexroth /(Ch_0_3.csv / Ch_0_4.csv 两通道 同时取最新的(或者id对应?)) 终拧紧工位5 拧紧力矩(T + Nm)  终拧紧角度
                while (true)
                {
                    threadStatusMonitor.ErrorMsg = "";
                    threadStatusMonitor.Threadcode = DataCapturePointCode;
                    threadStatusMonitor.Threadcname = DataCapturePointCname;
                    threadStatusMonitor.Threadendtime = DateTime.Now;
                    //threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                    threadStatusMonitor.Threadstatue = 0;
                    threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
                    try
                    {
                        //_dataCaptureConfig
                        if (plcService == null || !plcService.IsConnected)
                        {
                            threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
                            WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
                            SystemValue.PLCServiceReconnect(plcService);
                            //plcService.Close();
                            //plcService.OpenService();
                            Thread.Sleep(100);
                            continue;
                        }
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            if (value_02.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                wplog.WorkingProcedure = WorkingProcedure;
                                wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ;
                                wplog.Remarks = WorkingProcedure;
                                wplog.MonitoringPoint = DataCapturePointCode;
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.IsDeleted = false;
                                wplog.QualityType = QualityType.Online.ToString();
//                    path = path + "kistler_bush";
//                }
////                质量信息:涨断力矩...    预拧紧力矩 预拧紧角度   终拧紧力矩 终拧紧角度
////kistler_crack 涨断力矩 工位3 涨断力矩(Y - Maximum)  质量结果(Result)
////kistler_bush 压装力矩 工位6 衬套压装力矩(Y - Maximum)  衬套压装位移(Block X) 质量结果(Result)
////Bosch_Rexroth /(Ch_0_1.csv / Ch_0_2.csv 两通道 同时取最新的(或者id对应?))  预拧紧力矩工位4 预拧紧力矩(T + Nm)  质量结果(结果)    目前文件不能自动生成 博世 力士乐拧紧系统
////Bosch_Rexroth /(Ch_0_3.csv / Ch_0_4.csv 两通道 同时取最新的(或者id对应?)) 终拧紧工位5 拧紧力矩(T + Nm)  终拧紧角度
//                while (true)
//                {
//                    threadStatusMonitor.ErrorMsg = "";
//                    threadStatusMonitor.Threadcode = DataCapturePointCode;
//                    threadStatusMonitor.Threadcname = DataCapturePointCname;
//                    threadStatusMonitor.Threadendtime = DateTime.Now;
//                    //threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
//                    threadStatusMonitor.Threadstatue = 0;
//                    threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
//                    try
//                    {
//                        //_dataCaptureConfig
//                        if (plcService == null || !plcService.IsConnected)
//                        {
//                            threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC连接已断开,正在尝试打开!";
//                            WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
//                            SystemValue.PLCServiceReconnect(plcService);
//                            //plcService.Close();
//                            //plcService.OpenService();
//                            Thread.Sleep(100);
//                            continue;
//                        }
//                        else
//                        {
//                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
//                            if (value_02.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
//                            {//当上一标记位0,当前获取标记为1时,
//                             //触发操作,  并给静态变量赋值为1
//                             //业务代码
//                                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
//                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
//                                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
//                                wplog.WorkingProcedure = WorkingProcedure;
//                                wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ;
//                                wplog.Remarks = WorkingProcedure;
//                                wplog.MonitoringPoint = DataCapturePointCode;
//                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
//                                wplog.CreatedUserName = DataCapturePointCode;
//                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
//                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
//                                wplog.IsDeleted = false;
//                                wplog.QualityType = QualityType.Online.ToString();
                                ////扫描共享目录并将新的文件扫描返回  一般节拍在15秒左右(可以确认一下)
                                ////扫描修改时间在上次扫描时间之前10秒到当前时间的之间的文件
                                //var startTime = CommonManager.Instance.CheackPath(Environment.CurrentDirectory + $"\\LastModifyTime\\OP30Station{Station}-LastScapTime.txt", 6, -10);
                                //var endTime = DateTimeHelper.GetDateTime();
                                //var newFiles = FileHelper.DetectNewFilesCSV(path, 10, Convert.ToDateTime(startTime), endTime);
//                                ////扫描共享目录并将新的文件扫描返回  一般节拍在15秒左右(可以确认一下)
//                                ////扫描修改时间在上次扫描时间之前10秒到当前时间的之间的文件
//                                //var startTime = CommonManager.Instance.CheackPath(Environment.CurrentDirectory + $"\\LastModifyTime\\OP30Station{Station}-LastScapTime.txt", 6, -10);
//                                //var endTime = DateTimeHelper.GetDateTime();
//                                //var newFiles = FileHelper.DetectNewFilesCSV(path, 10, Convert.ToDateTime(startTime), endTime);
                                //foreach (System.IO.FileInfo file in newFiles)
                                //{
//                                //foreach (System.IO.FileInfo file in newFiles)
//                                //{
                                //}
//                                //}
                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
                                {
                                    try
                                    {
                                        var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType));
                                        //wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值
                                        var set = wplog.GetType().GetProperty(col.DataCaptureColumnTabelName);
                                        if (set == null)
                                        {
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
                                        }
                                        set.SetValue(wplog, valuecol);//给动态字段赋值
                                    }
                                    catch (Exception setex)
                                    {
                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态赋值【{WorkingProcedure ?? "空字符串"}】异常{wplog.Id}", setex);
                                    }
                                }
//                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
//                                {
//                                    try
//                                    {
//                                        var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType));
//                                        //wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值
//                                        var set = wplog.GetType().GetProperty(col.DataCaptureColumnTabelName);
//                                        if (set == null)
//                                        {
//                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
//                                        }
//                                        set.SetValue(wplog, valuecol);//给动态字段赋值
//                                    }
//                                    catch (Exception setex)
//                                    {
//                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 读取工件码动态赋值【{WorkingProcedure ?? "空字符串"}】异常{wplog.Id}", setex);
//                                    }
//                                }
                                try
                                {
                                    if (WorkingProcedure.Equals("OP80"))
                                    {
                                        //OP80 需要扫描文件读取质量信息
                                        //扫描修改时间在上次扫描时间之前60秒到当前时间的之间的文件
                                        List<FileInfo> files = new List<FileInfo>();
                                        var newFiles = FileHelper.DetectNewFilesCSV(path, 60, DateTimeHelper.GetDateTime(), DateTimeHelper.GetDateTime().AddHours(1));
                                        foreach (var file in newFiles)
                                        {
                                            files.Add((FileInfo)file);
                                        }
                                        files = files.OrderByDescending(o => o.LastAccessTime).ToList();
                                        foreach (var file in files)
                                        {//取倒序匹配的文件名为工件号的文件
                                            if (file.Name.Contains(wplog.WorkPieceID))
                                            {
                                                var datatable = CSVHelper.ReadCSVList(file.FullName);
                                                List<string> rowFirst = new List<string>();
                                                List<string> rowSecond = new List<string>();
                                                if (datatable.Count == 2)
                                                {
                                                    rowFirst = datatable[0].Split(',').ToList();
                                                    rowSecond = datatable[1].Split(',').ToList();
                                                    //给相应质量数据赋值
                                                    wplog.OP80NewCode = rowSecond[1];
                                                    wplog.QualityOP80To1 = rowFirst[13];
                                                }
                                                else
                                                {
                                                    wplog.Remarks = (wplog.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName}异常,行数不是2行";
                                                }
                                            }
                                            else
                                            {
//                                try
//                                {
//                                    if (WorkingProcedure.Equals("OP80"))
//                                    {
//                                        //OP80 需要扫描文件读取质量信息
//                                        //扫描修改时间在上次扫描时间之前60秒到当前时间的之间的文件
//                                        List<FileInfo> files = new List<FileInfo>();
//                                        var newFiles = FileHelper.DetectNewFilesCSV(path, 60, DateTimeHelper.GetDateTime(), DateTimeHelper.GetDateTime().AddHours(1));
//                                        foreach (var file in newFiles)
//                                        {
//                                            files.Add((FileInfo)file);
//                                        }
//                                        files = files.OrderByDescending(o => o.LastAccessTime).ToList();
//                                        foreach (var file in files)
//                                        {//取倒序匹配的文件名为工件号的文件
//                                            if (file.Name.Contains(wplog.WorkPieceID))
//                                            {
//                                                var datatable = CSVHelper.ReadCSVList(file.FullName);
//                                                List<string> rowFirst = new List<string>();
//                                                List<string> rowSecond = new List<string>();
//                                                if (datatable.Count == 2)
//                                                {
//                                                    rowFirst = datatable[0].Split(',').ToList();
//                                                    rowSecond = datatable[1].Split(',').ToList();
//                                                    //给相应质量数据赋值
//                                                    wplog.OP80NewCode = rowSecond[1];
//                                                    wplog.QualityOP80To1 = rowFirst[13];
//                                                }
//                                                else
//                                                {
//                                                    wplog.Remarks = (wplog.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName}异常,行数不是2行";
//                                                }
//                                            }
//                                            else
//                                            {
                                                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件{file.FullName}不是指定工件{wplog.WorkPieceID}");
                                            }
                                        }
                                    }
//                                                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件{file.FullName}不是指定工件{wplog.WorkPieceID}");
//                                            }
//                                        }
//                                    }
                                }
                                catch (Exception ex)
                                {
                                    threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}下线标记 出现异常,请查看日志!";
                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件数据时异常,避免工序完成异常:", ex);
                                }
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
//                                }
//                                catch (Exception ex)
//                                {
//                                    threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}下线标记 出现异常,请查看日志!";
//                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件数据时异常,避免工序完成异常:", ex);
//                                }
//                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
//                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
//                                threadStatusMonitor.Threadstatue = 1;
                            }
                            value_02 = value.ToString();
//                            }
//                            value_02 = value.ToString();
                        }
                        threadStatusMonitor.Remarks = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
                        {
                            threadStatusMonitor.ThreadFrequency = 5000;
                            Thread.Sleep(5000);
                        }
                        else
                        {
                            threadStatusMonitor.ThreadFrequency = _dataCaptureConfig.DataCaptureFrequency.Value;
                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
                        }
//                        }
//                        threadStatusMonitor.Remarks = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
//                        if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
//                        {
//                            threadStatusMonitor.ThreadFrequency = 5000;
//                            Thread.Sleep(5000);
//                        }
//                        else
//                        {
//                            threadStatusMonitor.ThreadFrequency = _dataCaptureConfig.DataCaptureFrequency.Value;
//                            Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
//                        }
                    }
                    catch (Exception ex)
                    {
                        threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}工序监控测量标记 出现异常,请查看日志!";
                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常:", ex);
                    }
                    finally
                    {
                        WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
                    }
                }
            }
            else
            {
                threadStatusMonitor.ErrorMsg = "";
                threadStatusMonitor.Threadcode = DataCapturePointCode;
                threadStatusMonitor.Threadcname = DataCapturePointCname;
                threadStatusMonitor.Threadendtime = DateTime.Now;
                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                threadStatusMonitor.Threadstatue = 0;
                threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
                threadStatusMonitor.Remarks = $" {RandomHelper.GenerateRandomCode(4)} {DataCapturePointCode}工序监控测量标记 不做校验,请确认配置信息!";
                WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读{DataCapturePointCode}工序监控测量标记 不做校验,请确认是否配置异常");
            }
        }
//                    }
//                    catch (Exception ex)
//                    {
//                        threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 读取{DataCapturePointCode}工序监控测量标记 出现异常,请查看日志!";
//                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常:", ex);
//                    }
//                    finally
//                    {
//                        WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
//                    }
//                }
//            }
//            else
//            {
//                threadStatusMonitor.ErrorMsg = "";
//                threadStatusMonitor.Threadcode = DataCapturePointCode;
//                threadStatusMonitor.Threadcname = DataCapturePointCname;
//                threadStatusMonitor.Threadendtime = DateTime.Now;
//                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
//                threadStatusMonitor.Threadstatue = 0;
//                threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
//                threadStatusMonitor.Remarks = $" {RandomHelper.GenerateRandomCode(4)} {DataCapturePointCode}工序监控测量标记 不做校验,请确认配置信息!";
//                WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
//                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读{DataCapturePointCode}工序监控测量标记 不做校验,请确认是否配置异常");
//            }
//        }
    }
}
//    }
//}
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1002.cs
@@ -16,7 +16,7 @@
    /// <summary>
    /// OP10测试完成标记 (OP10)
    /// </summary>
    public class DataCaptureHandler_OP1002: DataCaptureHandler
    public class DataCaptureHandler_OP1002 : DataCaptureHandler
    {
        public static readonly DataCaptureHandler_OP1002 Instance = new DataCaptureHandler_OP1002();
@@ -95,7 +95,7 @@
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  并给静态变量赋值为1
                             //业务代码
                             Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序测标记读取{DateTime.Now}***1****");
                                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序测标记读取{DateTime.Now}***1****");
                                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
@@ -107,7 +107,7 @@
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.OnlineTime = DateTimeHelper.GetDateTime();
                                wplog.IsDeleted = false;
                                wplog.QualityType = QualityType.Online.ToString();
@@ -123,8 +123,8 @@
                                        {
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {WorkingProcedure}工序监控读码标记 读取工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
                                        }
                                        Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序测标记读取{DateTime.Now}***2****{col.DataCaptureColumnTabelName} 值 {valuecol.ToString()??""}");
                                        Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序测标记读取{DateTime.Now}***2****{col.DataCaptureColumnTabelName} 值 {valuecol.ToString() ?? ""}");
                                        if (col.DataCaptureColumnTabelName.Contains("Quality"))
                                        {//字段名包含Quality是认为是质量数据,都是转换成string
                                            set.SetValue(wplog, valuecol.ToString());//给动态字段赋值
@@ -152,6 +152,7 @@
                                //#endregion
                                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序测标记读取{DateTime.Now}***3****");
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1003.cs
@@ -154,6 +154,7 @@
                                //#endregion
                                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                                threadStatusMonitor.Threadstatue = 1;
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
@@ -737,150 +737,156 @@
        /// <param name="e"></param>
        private void button8_Click(object sender, EventArgs e)
        {
            try
            {
                DataCaptureHandler.RefreshDataCommonStatic();
                button8.Text = "模拟已启动";
                button8.BackColor = Color.Green;
                SystemValue.isStartedImitateModel = true;
                #region 数据采集项确定
                var dataCaptureConfigslist = DataCaptureConfigManager.GetDataCaptureConfigs();
                var columnList = DataCaptureConfigManager.GetDataCaptureColumnConfig();
                _dataCaptureHandler.Clear();
                foreach (var config in dataCaptureConfigslist)
                {
            //try
            //{
            //    DataCaptureHandler.RefreshDataCommonStatic();
            //    button8.Text = "模拟已启动";
            //    button8.BackColor = Color.Green;
            //    SystemValue.isStartedImitateModel = true;
            //    #region 数据采集项确定
            //    var dataCaptureConfigslist = DataCaptureConfigManager.GetDataCaptureConfigs();
            //    var columnList = DataCaptureConfigManager.GetDataCaptureColumnConfig();
            //    _dataCaptureHandler.Clear();
            //    foreach (var config in dataCaptureConfigslist)
            //    {
                    switch (config.DataCapturePointCode)
                    {
                        #region HMI04
                        case "RHMIOP104001":
                        case "RHMIOP2001":
                        case "RHMIOP303501":
                        case "RHMIOP5001":
                        case "RHMIOP6001":
                            HMI_WorkpieceReading.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(HMI_WorkpieceReading.Instance);
                            break;
                        case "WHMIOP104002":
                        case "WHMIOP2002":
                        case "WHMIOP303502":
                        case "WHMIOP5002":
                        case "WHMIOP6002":
                            HMI_WorkpieceWrite.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(HMI_WorkpieceWrite.Instance);
                            break;
                        #endregion
                        case "OP0501":
                            DataCaptureHandler_OP0501.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP0501.Instance);
                            break;
                        case "OP2001":
                            DataCaptureHandler_OP2001.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP2001.Instance);
                            break;
                        #region OP30
                        case "OP3001":
                            DataCaptureHandler_OP3001.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3001.Instance);
                            break;
                        case "OP3002":
                            DataCaptureHandler_OP3002.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3002.Instance);
                            break;
                        case "OP3003":
                            DataCaptureHandler_OP3003.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3003.Instance);
                            break;
                        case "OP3004":
                            DataCaptureHandler_OP3004.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3004.Instance);
                            break;
                        case "OP3005":
                            DataCaptureHandler_OP3005.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3005.Instance);
                            break;
                        case "OP3006":
                            DataCaptureHandler_OP3006.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3006.Instance);
                            break;
                        case "OP3007":
                            DataCaptureHandler_OP3007.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3007.Instance);
                            break;
                        #endregion
            //        switch (config.DataCapturePointCode)
            //        {
            //            #region HMI04
            //            case "RHMIOP104001":
            //            case "RHMIOP2001":
            //            case "RHMIOP303501":
            //            case "RHMIOP5001":
            //            case "RHMIOP6001":
            //                HMI_WorkpieceReading.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(HMI_WorkpieceReading.Instance);
            //                break;
            //            case "WHMIOP104002":
            //            case "WHMIOP2002":
            //            case "WHMIOP303502":
            //            case "WHMIOP5002":
            //            case "WHMIOP6002":
            //                HMI_WorkpieceWrite.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(HMI_WorkpieceWrite.Instance);
            //                break;
            //            #endregion
            //            case "OP0501":
            //                DataCaptureHandler_OP0501.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP0501.Instance);
            //                break;
            //            case "OP2001":
            //                DataCaptureHandler_OP2001.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP2001.Instance);
            //                break;
            //            #region OP30
            //            case "OP3001":
            //                DataCaptureHandler_OP3001.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3001.Instance);
            //                break;
            //            case "OP3002":
            //                DataCaptureHandler_OP3002.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3002.Instance);
            //                break;
            //            case "OP3003":
            //                DataCaptureHandler_OP3003.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3003.Instance);
            //                break;
            //            case "OP3004":
            //                DataCaptureHandler_OP3004.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3004.Instance);
            //                break;
            //            case "OP3005":
            //                DataCaptureHandler_OP3005.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3005.Instance);
            //                break;
            //            case "OP3006":
            //                DataCaptureHandler_OP3006.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3006.Instance);
            //                break;
            //            case "OP3007":
            //                DataCaptureHandler_OP3007.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3007.Instance);
            //                break;
            //            #endregion
                        #region OP35
                        case "OP3501":
                            DataCaptureHandler_OP3501.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3501.Instance);
                            break;
                        case "OP3502":
                            DataCaptureHandler_OP3502.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3502.Instance);
                            break;
                        case "OP3503":
                            DataCaptureHandler_OP3503.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3503.Instance);
                            break;
                        case "OP3504":
                            DataCaptureHandler_OP3504.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3504.Instance);
                            break;
                        case "OP3505":
                            DataCaptureHandler_OP3505.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3505.Instance);
                            break;
                        case "OP3506":
                            DataCaptureHandler_OP3506.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3506.Instance);
                            break;
                        case "OP3507":
                            DataCaptureHandler_OP3507.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP3507.Instance);
                            break;
                        #endregion
            //            #region OP35
            //            case "OP3501":
            //                DataCaptureHandler_OP3501.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3501.Instance);
            //                break;
            //            case "OP3502":
            //                /*
            //                DataCaptureHandler_OP3502.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3502.Instance);
            //                //*/
            //                break;
            //            case "OP3503":
            //                DataCaptureHandler_OP3503.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3503.Instance);
            //                break;
            //            case "OP3504":
            //                DataCaptureHandler_OP3504.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3504.Instance);
            //                break;
            //            case "OP3505":
            //                DataCaptureHandler_OP3505.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3505.Instance);
            //                break;
            //            case "OP3506":
            //                DataCaptureHandler_OP3506.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3506.Instance);
            //                break;
            //            case "OP3507":
            //                DataCaptureHandler_OP3507.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP3507.Instance);
            //                break;
            //            #endregion
                        #region OP80
                        case "OP8001":
                            DataCaptureHandler_OP8001.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8001.Instance);
                            break;
                        case "OP8002":
                            DataCaptureHandler_OP8002.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8002.Instance);
                            break;
                        case "OP8003":
                            DataCaptureHandler_OP8003.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8003.Instance);
                            break;
                        case "OP8004":
                            DataCaptureHandler_OP8004.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8004.Instance);
                            break;
                        case "OP8005":
                            DataCaptureHandler_OP8005.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8005.Instance);
                            break;
                        case "OP8006":
                            DataCaptureHandler_OP8006.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8006.Instance);
                            break;
                        case "OP8007":
                            DataCaptureHandler_OP8007.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP8007.Instance);
                            break;
                            #endregion
            //            #region OP80
            //            case "OP8001":
            //                DataCaptureHandler_OP8001.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8001.Instance);
            //                break;
            //            case "OP8002":
            //                /*
            //                DataCaptureHandler_OP8002.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8002.Instance);
            //                //*/
            //                break;
            //            case "OP8003":
            //                DataCaptureHandler_OP8003.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8003.Instance);
            //                break;
            //            case "OP8004":
            //                DataCaptureHandler_OP8004.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8004.Instance);
            //                break;
            //            case "OP8005":
            //                DataCaptureHandler_OP8005.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8005.Instance);
            //                break;
            //            case "OP8006":
            //                DataCaptureHandler_OP8006.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8006.Instance);
            //                break;
            //            case "OP8007":
            //                DataCaptureHandler_OP8007.Instance._dataCaptureConfig = config;
            //                _dataCaptureHandler.Add(DataCaptureHandler_OP8007.Instance);
            //                break;
            //                #endregion
                    }
                }
                #endregion
            //        }
            //    }
            //    #endregion
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(LogType.FormMain, "启动线程时----btn_StartUpAllThread_Click all报错:", ex);
            }
            //}
            //catch (Exception ex)
            //{
            //    Log4NetHelper.WriteErrorLog(LogType.FormMain, "启动线程时----btn_StartUpAllThread_Click all报错:", ex);
            //}
            //**/
        }
        private void button10_Click(object sender, EventArgs e)
@@ -934,8 +940,8 @@
                    MessageBox.Show("请点击调试模式按钮");
                    return;
                }
                DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
                DataCaptureHandler_OP3002.Instance.DataCaptureStart();
                //DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
                //DataCaptureHandler_OP3002.Instance.DataCaptureStart();
            }
            catch (Exception ex)
@@ -1140,22 +1146,22 @@
        {
            try
            {
                if (!SystemValue.isStartedImitateModel)
                {
                    MessageBox.Show("请点击调试模式按钮");
                    return;
                }
                DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
                DataCaptureHandler_OP8002.Instance.DataCaptureStart();
            //try
            //{
            //    if (!SystemValue.isStartedImitateModel)
            //    {
            //        MessageBox.Show("请点击调试模式按钮");
            //        return;
            //    }
            //    DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
            //    DataCaptureHandler_OP8002.Instance.DataCaptureStart();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"模拟异常:{ex.Message}");
                Log4NetHelper.WriteErrorLog(LogType.FormMain, "----button10_Click all报错:", ex);
            }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show($"模拟异常:{ex.Message}");
            //    Log4NetHelper.WriteErrorLog(LogType.FormMain, "----button10_Click all报错:", ex);
            //}
        }
        private void button20_Click(object sender, EventArgs e)
@@ -1353,6 +1359,11 @@
        }
        /// <summary>
        /// 正式环境,使用该按钮启动线程!!!!
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button24_Click(object sender, EventArgs e)
        {
@@ -1658,24 +1669,24 @@
            try
            {
                var WorkingProcedure = "OP35";
                var EquipmentID = "EOP35";
                var DataCapturePointCode = "OP3502A";
                //var DataCapturePointCode = "OP3002CH3";
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                wplog.WorkingProcedure = WorkingProcedure;
                wplog.EquipmentID = EquipmentID; ;
                wplog.Remarks = WorkingProcedure;
                wplog.MonitoringPoint = DataCapturePointCode;
                wplog.WorkPieceID = "DZ045L2309080100181A1A";
                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                wplog.CreatedUserName = DataCapturePointCode;
                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                wplog.IsDeleted = false;
                wplog.QualityOP10To1 = "-500";
                WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                //var WorkingProcedure = "OP35";
                //var EquipmentID = "EOP35";
                //var DataCapturePointCode = "OP3502A";
                ////var DataCapturePointCode = "OP3002CH3";
                //WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                //wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                //wplog.WorkingProcedure = WorkingProcedure;
                //wplog.EquipmentID = EquipmentID; ;
                //wplog.Remarks = WorkingProcedure;
                //wplog.MonitoringPoint = DataCapturePointCode;
                //wplog.WorkPieceID = "DZ045L2309080100181A1A";
                //wplog.CreatedTime = DateTimeHelper.GetDateTime();
                //wplog.CreatedUserName = DataCapturePointCode;
                //wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                //wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                //wplog.IsDeleted = false;
                //wplog.QualityOP10To1 = "-500";
                //WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                //string path = ConfigHelper.GetConfigString("OP30QualityDataForStation");//打码机打码二维码路径
                //if (string.IsNullOrEmpty(path))
@@ -1861,14 +1872,14 @@
                            DataCaptureHandler_OP7009.Instance._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(DataCaptureHandler_OP7009.Instance);
                            break;
                        //case "OP3002CH3":
                        //    //case "OP3002CH4":
                        //    //case "OP3002CH5":
                        //    //case "OP3002CH6":
                        //    DataCaptureHandler_02 dc02 = new DataCaptureHandler_02();
                        //    dc02._dataCaptureConfig = config;
                        //    _dataCaptureHandler.Add(dc02);
                        //    break;
                            //case "OP3002CH3":
                            //    //case "OP3002CH4":
                            //    //case "OP3002CH5":
                            //    //case "OP3002CH6":
                            //    DataCaptureHandler_02 dc02 = new DataCaptureHandler_02();
                            //    dc02._dataCaptureConfig = config;
                            //    _dataCaptureHandler.Add(dc02);
                            //    break;
                            //case "OP2002A":
                            //    //case "OP2002B":
                            //    //case "OP2002C":
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Test/UnitTest1.cs
@@ -13,6 +13,19 @@
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMetho22()
        {
            var aa = "";
            WorkPieceInfo cur_db_info = new WorkPieceInfo()
            {
                WorkingProcedureCurrent = "OP05"
            };
            WorkPieceInfoManager.SetWorkingProcedureCurrentForOP10(cur_db_info, ref aa);
        }
        [TestMethod]
        public void TestMethod1()
        {