/// <summary>
        /// VOBC子子系统设备部署执行(更新复位)执行虚方法
        /// </summary>
        public virtual void DeployExec()
        {
            //获取VOBC产品实例
            VOBCProduct vobc = base.BelongProduct as VOBCProduct;

            //验证需要发送的文件是否存在(返回true 则代表文件检查成功且已发送了文件传输请求)
            if (GetFileListAndCheckExist(vobc))
            {
                ////记录日志
                //LogManager.InfoLog.LogProcInfo(this.GetType().Name, "DeployExec", "开始VOBC产品:" + base.BelongProduct.ProductID + "的子子系统:" + base.DeviceType + "部署过程");

                //发送文件
                if (!SendFile(vobc))
                {
                    //LogManager.InfoLog.LogProcError(this.GetType().Name, "DeployExec", "VOBC产品:" + base.BelongProduct.ProductID + "的子子系统:" + base.DeviceType + "发送文件超时,部署失败!");
                    vobc.Report.ReportWindow("VOBC产品:" + base.BelongProduct.ProductID + "的子子系统:" + base.DeviceType + "发送文件超时,部署失败!");
                    vobc.SkipFlag = true;
                    //vobc.InProcess = false; Modified @ 10.16 在外层置false
                    //Modified @ 9.28 与DataAnalysis的操作重复,且时机不同步,删除此处界面变化,判断仅用于跳出执行流程。
                    //CDeviceDataFactory.Instance.VobcContainer.SetProductDeviceState(vobc.Ip, Convert.ToInt32(vobc.Port), "发送失败");
                    //CDeviceDataFactory.Instance.VobcContainer.SetProductState(vobc.Ip, Convert.ToInt32(vobc.Port), "更新失败");
                    return;
                }

                //执行文件校验操作
                if (!CheckFile(vobc))
                {
                    //LogManager.InfoLog.LogProcError(this.GetType().Name, "DeployExec", "VOBC产品:" + base.BelongProduct.ProductID + "的子子系统:" + base.DeviceType + "校验文件超时或未通过,部署失败!");
                    vobc.Report.ReportWindow("VOBC产品:" + base.BelongProduct.ProductID + "的子子系统:" + base.DeviceType + "校验文件超时或未通过,部署失败!");
                    vobc.SkipFlag = true;
                    //vobc.InProcess = false; Modified @ 10.16 在外层置false
                    //Modified @ 9.28 与DataAnalysis的操作重复,且时机不同步,删除此处界面变化,判断仅用于跳出执行流程。
                    //CDeviceDataFactory.Instance.VobcContainer.SetProductDeviceState(vobc.Ip, Convert.ToInt32(vobc.Port),"校验失败");
                    //CDeviceDataFactory.Instance.VobcContainer.SetProductState(vobc.Ip,Convert.ToInt32(vobc.Port),"更新失败");
                    return;
                }

                //检查VOBC产品是否全部发送和校验,这里有冗余操作,并不是在这里完成的文件校验核对 @ 10.16
                if (vobc.IsFileChecked())
                {
                    //记录日志
                    LogManager.InfoLog.LogProcInfo(this.GetType().Name, "DeployExec", "VOBC" + base.BelongProduct.ProductID + "所有文件校验通过,开始更新过程");

                    //刷新界面显示内容
                    vobc.Report.ReportWindow("VOBC" + vobc.ProductID + "部署文件校验成功!");

                    //执行文件更新流程
                    if (!BelongProduct.FileUpdate())
                    {
                        vobc.SkipFlag  = true;
                        vobc.InProcess = false;
                    }
                }
                else
                {
                    ///校验不通过次数+1
                    vobc.recvCheckCount++;
                }
                if (vobc.recvCheckCount == vobc.CSelectedDeviceType.Count)
                {
                    ///接收到全部device的校验回复,依然失败,校验失败
                    vobc.Report.ReportWindow("VOBC" + vobc.ProductID + "部署文件校验失败!");
                    vobc.SkipFlag = true;
                    //vobc.InProcess = false; Modified @ 10.16 在外层置false
                    CDeviceDataFactory.Instance.VobcContainer.SetProductFailReason(vobc.Ip, Convert.ToInt32(vobc.Port), "文件校验未通过");
                    CDeviceDataFactory.Instance.VobcContainer.SetProductState(vobc.Ip, Convert.ToInt32(vobc.Port), "更新失败");
                }
            }
            else
            {
                //暂时什么都不做
            }
        }